云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 纯业余者用VC(MFC)编写串口调试助手(含VC6工程源文件)

纯业余者用VC(MFC)编写串口调试助手(含VC6工程源文件)

  • 62 次阅读
  • 3 次下载
  • 2025/7/13 12:06:12

//=====================消息处理函数结束===================== 双击“打开串口”按钮编辑代码如下: void CCommassistDlg::OnComcontrol() { // TODO: Add your control notification handler code here int nBaud,nData,nStop,nCal,nTemp; CString sTemp,siTemp; //波特率下拉框设置================= nTemp=m_baud.GetCurSel(); switch(nTemp) { case 0: nBaud = CBR_110; break; case 1: nBaud = CBR_300; break; case 2: nBaud = CBR_600; break; case 3: nBaud = CBR_1200; break; case 4: nBaud = CBR_2400; break; case 5: nBaud = CBR_4800; break; case 6: nBaud = CBR_9600; break; case 7: nBaud = CBR_14400; break; case 8: nBaud = CBR_19200; break; case 9: nBaud = CBR_38400; break; case 10: nBaud = CBR_56000; break; case 11: nBaud = CBR_57600; break; case 12: nBaud = CBR_115200; break; case 13: nBaud = CBR_128000; break; case 14: nBaud = CBR_256000; break; } //数据位下拉框设置================= nTemp=m_bdata.GetCurSel();

第 25 页 共 39 页

switch(nTemp) {

case 0: nData = 5; break; case 1: nData = 6; break; case 2: nData = 7; break; case 3: nData = 8; break; }

//停止位下拉框设置================= nTemp=m_bstop.GetCurSel(); switch(nTemp) {

case 0: nStop = ONESTOPBIT; break; case 1: nStop = ONE5STOPBITS; break; case 2: nStop = TWOSTOPBITS; break; }

//校验位下拉框设置================= nTemp=m_cal.GetCurSel(); switch(nTemp) {

case 0: nCal = NOPARITY; break; case 1: nCal = ODDPARITY; break; case 2: nCal = EVENPARITY; break; case 3: nCal = MARKPARITY; break; case 4: nCal = SPACEPARITY; break; }

int commnum_buf;

commnum_buf = m_comlist.GetCurSel(); if(commnum_buf < 0) { MessageBox(\获取串口错误\错误\ ComIsOK = FALSE;

第 26 页 共 39 页

return; } m_comlist.GetLBText(commnum_buf,strcomname); if(!ComIsOK) { OpenComm(nBaud,nData,nStop,nCal); //调用打开串口函数OpenComm() if(ComIsOK)

pReceiveThread=AfxBeginThread(ThreadFunc,this,THREAD_PRIORITY_LOWEST); //启动接收线程 ShowStatus(); if(!ComIsOK) m_comcontrol.SetWindowText(\打开串口\ else { m_comcontrol.SetText(\关闭串口\//按钮显示状态改变 m_comcontrol.SetForeColor(RGB(0,155,0)); //串口打开后文本颜色变绿 m_ctrlIcon.SetIcon((HICON)LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON_OPEN), IMAGE_ICON, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CXICON), 0)); //显示打开icon m_comlist.EnableWindow(false); //设置串口号下拉框不可用 m_baud.EnableWindow(false); //设置波特率下拉框不可用 m_bdata.EnableWindow(false); //设置数据位下拉框不可用 m_bstop.EnableWindow(false); //设置停止位下拉框不可用 m_cal.EnableWindow(false); //设置校验位下拉框不可用 GetDlgItem(IDC_BTN_HANDSEND)-> EnableWindow(true); //设置手动发送按钮不可用 GetDlgItem(IDC_BTN_AUTOSEND)-> EnableWindow(true); //设置自动发送按钮可用 GetDlgItem(IDC_EDIT_TIMER) -> EnableWindow(true); //设置发送间隔按钮可用 GetDlgItem(IDC_BTN_SELCTFILE)->EnableWindow(true); //设置选择文件按钮可用 GetDlgItem(IDC_BTN_SENDFILE)-> EnableWindow(true); //设置发送文件按钮可用 } return; } else { CloseComm(); //调用关闭串口函数CloseComm() // TerminateThread(pReceiveThread,0);

第 27 页 共 39 页

ShowStatus(); m_comcontrol.SetText(\打开串口\ m_comcontrol.SetForeColor(RGB(255,0,0)); m_ctrlIcon.SetIcon((HICON)LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDI_ICON_CLOSE), IMAGE_ICON, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CXICON), 0)); //显示关闭icon m_comlist.EnableWindow(true); //设置串口号下拉框可用 m_baud.EnableWindow(true); //设置波特率下拉框可用 m_bdata.EnableWindow(true); //设置数据位下拉框可用 m_bstop.EnableWindow(true); //设置停止位下拉框可用 m_cal.EnableWindow(true); //设置校验位下拉框可用 GetDlgItem(IDC_BTN_HANDSEND)-> EnableWindow(false); //设置手动发送按钮不可用 GetDlgItem(IDC_BTN_AUTOSEND)-> EnableWindow(false); //设置自动发送按钮不可用 GetDlgItem(IDC_EDIT_TIMER) -> EnableWindow(false); //设置发送间隔按钮不可用 GetDlgItem(IDC_BTN_SELCTFILE)->EnableWindow(false); //设置选择文件按钮不可用 GetDlgItem(IDC_BTN_SENDFILE)-> EnableWindow(false); //设置发送文件按钮不可用 return; } }

添加读串口函数,代码如下:

DWORD CCommassistDlg::ReadComm() { CString strTemp; OVERLAPPED m_osRead; memset(&m_osRead,0,sizeof(OVERLAPPED)); m_osRead.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); char lpInBuffer[1024]; DWORD dwBytesRead=1024; BOOL bReadStatus; bReadStatus=ReadFile(hCom,lpInBuffer,dwBytesRead,&dwBytesRead,&m_osRead); if(!bReadStatus) //如果ReadFile函数返回FALSE { if(GetLastError()==ERROR_IO_PENDING) //GetLastError()函数返回ERROR_IO_PENDING,表明串口正在进行读操作 {

第 28 页 共 39 页

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

//=====================消息处理函数结束===================== 双击“打开串口”按钮编辑代码如下: void CCommassistDlg::OnComcontrol() { // TODO: Add your control notification handler code here int nBaud,nData,nStop,nCal,nTemp; CString sTemp,siTemp; //波特率下拉框设置================= nTemp=m_baud.GetCurSel(); switch(nTemp) { case 0: nBaud = CBR_110; break; case 1: nBaud = CBR_300; break; case 2: nBaud = CBR_60

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com