我是学生一个,现在毕设中碰到了一个串口实现的问题。系统要同时进行三个串口数据的采集,精度是每秒一次。
由于采用基于单文档,故不能用MSComm。
我的思想是采用事件驱动,每接收到一个字符将其加入到接收区中,再另外对接收区中的数据进行处理。
好象API编写串口程序能实现接收过程,但很少看到具体资料,各位前辈高人能否指点一二?最好能有代码,谢谢了!!!
[email protected]

解决方案 »

  1.   

    http://www.gjwtech.com/scomm/sc2serialportclass.htm
    龚建伟主页上的一个多线程串口类,我看过它的代码,确实不错,写的非常认真严谨,而且很多人用这个类做串口程序,这个附带的程序和你的要求基本上一样,只不过打开的是两个串口,原理有一样,不多说了,相信你把代码看懂后,你的程序就不在话下了
      

  2.   

    万分感谢AthlonxpX86提供的这个类!!!
    不过我对其中的数据格式这片还是有些不了解,能不能解释一下?
    该类中我的程序只用实现数据接收,串口设置为“9600,n,8,1”。
    在函数InitPort(……)实现了对串口的初始化,已对数据格式定义(波特率,停止位…)
    我觉得如果没有效验位的话是不是如下就可以实现数据的接收:
    (数据是文本形式接收)
    LONG CSCPortTestView::OnCommunication(WPARAM ch, LPARAM port)
    {
        if (port=1)
        {
           CString strtemp=(char)ch;
           m_receive+=strtemp;     //m_receive为数据接收区
        }            
    }
    好象太easy了点,有点受不了 ^_^
      

  3.   

    我是说叫你好好的看看那个类,结合着MSDN看,我给你讲也不方便,你说是吧,
      

  4.   

    单文档中也可以使用MSComm控件。我以前用过。
      

  5.   

    xhjf777(古格国王) ????
    是吗??我的意思是指当前界面是文档的情况下(无对话框),能实现插入MSComm控件?你如何实现的?好象必须要插入到对话框吧……
      

  6.   

    插入到About对话框啊!
    我以前在单文档中用MSComm控件作过串口通讯,可以的。你可以参照:http://www.gjwtech.com/serialcomm.htm
               http://www.gjwtech.com/scomm/sc2sdimscommdemo.htm