我用mscomm控件写的串口通信 能够发数据但是 当我接收数据是毫无响应  我添加的 oncommMscomm1()函数 在接收过程是无响应 望大家帮忙 看是哪里 的原因还有一个问题 就是接收数据 和 发送数据 是不是应该分别用不同的mscomm控件呢(也就是得接收用一个mscomm控件  发送还要用一个mscomm控件呢)谢谢大家

解决方案 »

  1.   

    就用一个控件,不在oncommMscomm1事件里,直接接收看一看
      

  2.   

      MSComm控件一般用事件驱动方式从串口接收数据,也就是消息处理,当串口有事件发生时,程序调用消息函数来处理数据。打开 ClassWizard→Message Maps,在ClassName中选择类CcomDlg,再在Object IDs中选择IDC_MSCOMMl,然后在Message中双击消息OnComm(或单击“Add Function”),在弹出的对话框中将函数名改为OnComm,单击“OK”。就加入了串口事件的消息处理函数。在coreDlg.cpp文件中编写 OnComm()中的代码,主要任务是从串口接收数据并显示在接收编辑框中。
      void CComDlg:OnComm()
      {VARIANT varlant_inp;
      ColeSafeArray safearray_inp;
      LONG len,k;
      BYTE rxdata[2048]:
      CStrlng strtemp;
      if(m_ctrlComm.GetCommEvent()==2)
      {
      varlant_inp=m ctrlComm.GetInput():
      safearray_in=variant_inp;
      len=safeary_inp.GetOneDimSize():
      for(k=0;k<len;k++)
      safearray_inp.GetElement(&k,rxdata+k):
      for(k=O;k<len;k++)
      {
      BYTE bl=*(char*)(rxdata+k):
      strtemp.Format(“%c”,bt);
      m_strEditR.XData+=strtemp;
       }
      }
      UpdateData(FALSE);
      }
       
      

  3.   

    还是不行 我对控件mscomm添加oncommscomm()函数 可是接收数据时毫无响应还是不行啊现在时函数体比较容易写了,但是根本无法触发接收数据的函数啊
      

  4.   

    void CComDlg:OnComm() 
      根本不触发
      

  5.   

    大家帮我出出招啊
    vs2005编译器    mscomm 控件  为什么只能发送数据 不能接收数据呢 要接收数据 需要添加什么 具体函数内容 我已大概知道  就是添加什么事件接收呢 比如 oncommscomm()函数是接收数据的么 但是我的为什么不响应这个函数啊谢谢大家啦 
      

  6.   


    一般来说,使用这个控件时,先设定好阀值,比如设置阀值为1个字节,那么当接收到一个字节的数据时,OnComm 事件就会触发,然后你把代码写在这个事件中,取出这1个字节,放到你自己定义的数组中,然后继续收第2个字节,直到收满一帧数据。
    通讯都需要一个协议,这个协议由你自己来定,结合你的协议来做吧。
      

  7.   

    原来是要加上这条代码
    m_mscom.SetRThreshold(1);