墨桃夭夭 2013-12-03 14:05 采纳率: 0%
浏览 921

MFC串口通信,急求答案!

我是基于对话框的mfc。在主对话框里添加菜单,单击一个菜单项弹出对应功能的对画框,在其中一个对话框添加的MSComm控件,编写了串口通信命令。现在想在其他对话框里也使用串口通信,要如何做呢?(每一个对话框新生一个类)

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:23
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/268140
    • 你也可以参考下这篇文章:基于MFC的简单串口通信(针对单片机简单通信)
    • 除此之外, 这篇博客: MFC串口操作一:显示串口输入信息中的 1、添加MFC相应消息事件:为了方便得到外面的信息:(因为我没有找到类向导之类直接导入这个事件的方法,直接填写代码也可以实现同样的功能) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      ①注意:如果报错

      则:将LONG改为LRESULT

      ①头文件中:

      	afx_msg LONG OnComm(WPARAM ch,LPARAM port);//自己手动添加的一个消息处理函数:为了有消息给MFC发送后,MFC有变化
      //afx_msg LRESULT OnComm(WPARAM ch,LPARAM port);//LONG报错就使用LRESULT,自己手动添加的一个消息处理函数,为了有消息给MFC发送后,MFC有变化

      ②源文件中:

      ON_MESSAGE(WM_COMM_RXCHAR,OnComm)

      //使用配置文件中的:自定义输入串口信息长度
      //LRESULT CFlashAndVideoDlg::OnComm(WPARAM ch,LPARAM port)//LONG报错就使用LRESULT,自己手动添加的一个消息处理函数,为了有消息给MFC发送后,MFC有变化
      LONG CFlashAndVideoDlg::OnComm(WPARAM ch,LPARAM port)
      {
      	int length=comMessageLength;
      
      	str += ch;
      	if (str.length()>=length)
      	{
      		int index= str.length() - length;
      		if (str[index] == 0x55 && str[index+1] == ( char )0xaa )
      		{
      			std::string pp = str.substr(index, length);
      			m_SerialPortsend.WriteToPort((char *)pp.c_str(),length);
      			char * tempstr = const_cast<char*>(pp.c_str());
      			std::string showstr;
      			for (unsigned int i = 0; i<length;i++)
      			{
      				char  buf[10] = {0};
      				unsigned char tempchar = tempstr[i];
      				sprintf_s(buf, 10,"%02x ",tempchar);
      				showstr += buf;
      				showstr += " ";
      			}
      			SetDlgItemText(IDC_EDIT1, (CString)showstr.c_str());
      			str.clear();
      		}
      	}
      	return 0;
      }
      

       


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。