上位机源码在下面 |
// MFCdkjceshiDlg.cpp : 实现文件 // #include "stdafx.h" #include "MFCdkjceshi.h" #include "MFCdkjceshiDlg.h" #include "afxdialogex.h" #include"Resource.h" #ifdef _DEBUG #define new DEBUG_NEW #endif int xssz[160][240]; HDC dcc; int dydata = 0; int zljs = 0; int yddata[38401]; CString str9; LPCTSTR zhilingbiao[8000000]; // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_ABOUTBOX }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CMFCdkjceshiDlg 对话框 CMFCdkjceshiDlg::CMFCdkjceshiDlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_MFCDKJCESHI_DIALOG, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMFCdkjceshiDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_MSCOMM1, m_com); } BEGIN_MESSAGE_MAP(CMFCdkjceshiDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON2, &CMFCdkjceshiDlg::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON3, &CMFCdkjceshiDlg::OnBnClickedButton3) ON_BN_CLICKED(IDC_BUTTON1, &CMFCdkjceshiDlg::OnBnClickedButton1) END_MESSAGE_MAP() // CMFCdkjceshiDlg 消息处理程序 BOOL CMFCdkjceshiDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CMFCdkjceshiDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CMFCdkjceshiDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CMFCdkjceshiDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CMFCdkjceshiDlg::OnBnClickedButton2()// 选择并打开图像 { CString strFile = _T(""); CFileDialog dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T("Describe Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"), NULL); if (dlgFile.DoModal()) { strFile = dlgFile.GetPathName(); } //以指定大小显示图像 CImage image; int iii,jjj,ccc,ddd; image.Load(strFile); dcc = GetDC()->m_hDC; image.Draw(dcc, CRect(0, 0,240,160)); int xsx, xsy, js = 0; int xsx1, xsy1=0;//////// int wzjs = 0; for (xsy = 0; xsy <240; xsy++) { for (xsx = 0; xsx <160; xsx++) { if (GetPixel(dcc, xsy, xsx)<9000000) { xssz[xsx][xsy] = 1; } else { xssz[xsx][xsy] = 2; } } } int aaaa; /*************************************************************************/ for (aaaa = 0; aaaa < 80; aaaa++) { for (xsx1 = 0; xsx1 <240; xsx1++) { if (xssz[xsy1][xsx1] == 1) { if (xsx1 == wzjs) { zhilingbiao[zljs] = L"A"; zljs++; } else { if (xsx1 < wzjs) { ccc = wzjs - xsx1; for (iii = 0; iii < ccc; iii++) { zhilingbiao[zljs] = L"C"; zljs++; wzjs--; } zhilingbiao[zljs] = L"A"; zljs++; } else { ccc = xsx1 - wzjs; for (iii = 0; iii < ccc; iii++) { zhilingbiao[zljs] = L"B"; zljs++; wzjs++; } zhilingbiao[zljs] = L"A"; zljs++; } } } } zhilingbiao[zljs] = L"D"; zljs++; xsy1++; for (xsx1 = 240; xsx1>0; xsx1--) { jjj = xsx1 - 1; if (xssz[xsy1][jjj] == 1) { if (jjj == wzjs) { zhilingbiao[zljs] = L"A"; zljs++; } else { if (jjj < wzjs) { ddd = wzjs - jjj; for (iii = 0; iii < ddd; iii++) { zhilingbiao[zljs] = L"C"; zljs++; wzjs--; } zhilingbiao[zljs] = L"A"; zljs++; } else { ddd = jjj - wzjs; for (iii = 0; iii < ddd; iii++) { zhilingbiao[zljs] = L"B"; zljs++; wzjs++; } zhilingbiao[zljs] = L"A"; zljs++; } } } } zhilingbiao[zljs] = L"D"; zljs++; xsy1++; } zhilingbiao[zljs] = L"E"; zljs++; /*************************************************************************/ str9.Format(_T("%d"), zljs); SetDlgItemText(IDC_STATIC5, str9); SetDlgItemText(IDC_STATIC3, L"准备完毕"); zljs = 0; } BEGIN_EVENTSINK_MAP(CMFCdkjceshiDlg, CDialogEx) ON_EVENT(CMFCdkjceshiDlg, IDC_MSCOMM1, 1, CMFCdkjceshiDlg::OnCommMscomm1, VTS_NONE) END_EVENTSINK_MAP() void CMFCdkjceshiDlg::OnCommMscomm1()// 接收事件处理函数 { VARIANT variant_inp; COleSafeArray safearray_inp; CString strInput; if (m_com.get_CommEvent() == 2)//值为2表示接收缓冲区内有字符 { variant_inp = m_com.get_Input();//读取缓冲区消息 str9.Format(_T("%d"), dydata); SetDlgItemText(IDC_STATIC5, str9); panduan(); } } void CMFCdkjceshiDlg::OnBnClickedButton3()//打开串口 { CString Data; GetDlgItem(IDC_COMBO1)->GetWindowText(Data); int b = _ttoi(Data); if (m_com.get_PortOpen())//如果发现串口原来是打开的,关闭串口 m_com.put_PortOpen(FALSE); m_com.put_CommPort(b);//选择COM1端口 m_com.put_InBufferSize(1024);//设置输入缓冲区大小 m_com.put_OutBufferSize(512);//设置输出缓冲区大小 m_com.put_Settings(L"9600,n,8,1");//设置波特率9600,无校验,8个数据位,1个停止位 if (!m_com.get_PortOpen()) { m_com.put_PortOpen(TRUE);//打开串口 m_com.put_RThreshold(1);//每当接收缓冲区中有1个字符,则接收串口数据 m_com.put_InputLen(0);//设置当前缓冲区长度为0 m_com.get_Input();//预读缓冲区以清除残留数据 SetDlgItemText(IDC_STATIC2, L"连接成功!"); } else { SetDlgItemText(IDC_STATIC2, L"连接失败!"); } } void CMFCdkjceshiDlg::OnBnClickedButton1()//开始雕刻 { SetDlgItemText(IDC_STATIC4, L"正在工作中"); m_com.put_Output(COleVariant(L"Q"));//发送握手指令 } void CMFCdkjceshiDlg::panduan() { if (zhilingbiao[dydata] == L"E") { m_com.put_Output(COleVariant(zhilingbiao[dydata])); //发送指令 MessageBox(L"打印完毕"); dydata = 0; } else { m_com.put_Output(COleVariant(zhilingbiao[dydata])); //发送指令 dydata++; } } |
必须支持,其实重要的是过程+ |
不错,很有借鉴意义 |
大哥 上位机源码链接过期了 能补发一下吗 |
收藏了,谢谢分享 |
上位机源码链接过期了 能补发一下吗 想学习一下,谢谢啦 |
上午机源码发一下谢谢! |
上位机源码链接过期了 能补发一下吗 想学习一下,谢谢啦 |
老哥 上位机源码链接过期了 能补发一下吗 想学习一下 |
老哥 上位机源码链接过期了 能补发一下吗 想学习一下 |
可以发下整套资料吗?非常感谢。 |
发个上位机源码可以吗?谢谢啦 |
非常不错,上位机过期了 |
你好,可以发个上位机源码吗?谢谢啦 |
发下上位机源程序谢谢 |
发下上位机源程序谢谢 |
fox555w 发表于 2020-8-6 11:30 哇,都快两年了,老哥还在回复,支持,点赞 |
刚接触,学习了解下,感谢分享 |
qxuem 发表于 2020-4-4 13:41 等我有时间了,整理个详细一点的资料发一下。 |
多谢楼主分享,收藏了 |
你好。楼主。网盘过过期了。麻烦再发下。 谢谢了。 那个压缩包里面有电路图吗 |
高手啊,看见不错 |
感谢楼主分享,正在学习。。。 |
同求上位机源码 多谢! |
上位机源码能发我吗 老哥 |
那么,能否将制作过程和电路设计也贴出来呢?便于仿制啊 |
能发一下源码吗,新手制作,大佬求帮一下 |
fox555w 发表于 2018-12-31 12:14 兄弟把上位机的代码也发给我下呗,谢谢了。 |
fox555w 发表于 2018-12-31 12:14 请问可以发给我吗? |
qq35404085 发表于 2018-8-21 21:36 上位机源码我可以发给你,是我自己写的,虽然简单了点但可以参考! |
求个上位机源码 谁有啊 |
学习贴收藏了,谢谢分享 |