none
CMscomm 开关之后接不到数据! RRS feed

  • 问题

  • 响应按键消息对COMM控件进行开关操作,有时候串口打开后接收不到数据(多数情况是正常的),但此时用get_PortOpen()测试显示串口已经打开了。

    void CCanBusDlg::OnBnClickedButtonComOpen()
    {
     // TODO: 在此添加控件通知处理程序代码
     BOOL bOpen = !m_pMsComm->get_PortOpen();
     m_pMsComm->put_PortOpen(bOpen);
    }
    2009年5月13日 8:25

答案

全部回复

  • 建议你去找个VB论坛问问,这个控件是VB6的组件,用VC的大多直接调API的……
    MSMVP VC++
    2009年6月17日 17:50
    版主
  • 哦,谢谢!那我也去学学API吧。

    2009年6月18日 1:49
  • 参看下面文章:
    http://www.joyvc.cn/NetworkAndCommunication/NetworkAndCommunicationGroup00141.html
    欢迎光临我的个人网站:http://www.joyvc.cn,本网站提供[IM即时通信|棋牌游戏|网游开发|UI编程|网络通讯|组件开发|图像多媒体|数据库]方面的VC/C++/C技术文章、源代码和教程资料
    2009年6月18日 9:30
    版主
  • 响应按键消息对COMM控件进行开关操作,有时候串口打开后接收不到数据(多数情况是正常的),但此时用get_PortOpen()测试显示串口已经打开了。

    void CCanBusDlg::OnBnClickedButtonComOpen()
    {
     // TODO: 在此添加控件通知处理程序代码
     BOOL bOpen = !m_pMsComm->get_PortOpen();
     m_pMsComm->put_PortOpen(bOpen);
    }
    我最近也在VC++60下做个RS232串口数据采集的案子,也是用MSComm,从来没有接触过VC的咱,还好比较顺利,当然咱有很好的C和C++的基础。。lz的困惑,建议:
    1、安装一个串口调试,查看,确认外设是否发出了正确的数据,是十六进制的字符串

    2、查看,波特率等等的参数都设置对了吗?

    再用if(MSComm.GetCommEvent()==2),循环判断,接收字符串
    2009年9月25日 7:54
  • 别人写的控件不知道内部怎么转,遇到有问题很难调试。而且现在用vs2008都不带MSComm控件了,所以俺们改用API了,还是自己写代码比较随意。

    2009年9月29日 3:05