我是学生一个,现在毕设中碰到了一个串口实现的问题。系统要同时进行三个串口数据的采集,精度是每秒一次。
由于采用基于单文档,故不能用MSComm。
我的思想是采用事件驱动,每接收到一个字符将其加入到接收区中,再另外对接收区中的数据进行处理。
好象API编写串口程序能实现接收过程,但很少看到具体资料,各位前辈高人能否指点一二?最好能有代码,谢谢了!!!
[email protected]
由于采用基于单文档,故不能用MSComm。
我的思想是采用事件驱动,每接收到一个字符将其加入到接收区中,再另外对接收区中的数据进行处理。
好象API编写串口程序能实现接收过程,但很少看到具体资料,各位前辈高人能否指点一二?最好能有代码,谢谢了!!!
[email protected]
龚建伟主页上的一个多线程串口类,我看过它的代码,确实不错,写的非常认真严谨,而且很多人用这个类做串口程序,这个附带的程序和你的要求基本上一样,只不过打开的是两个串口,原理有一样,不多说了,相信你把代码看懂后,你的程序就不在话下了
不过我对其中的数据格式这片还是有些不了解,能不能解释一下?
该类中我的程序只用实现数据接收,串口设置为“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了点,有点受不了 ^_^
是吗??我的意思是指当前界面是文档的情况下(无对话框),能实现插入MSComm控件?你如何实现的?好象必须要插入到对话框吧……
我以前在单文档中用MSComm控件作过串口通讯,可以的。你可以参照:http://www.gjwtech.com/serialcomm.htm
http://www.gjwtech.com/scomm/sc2sdimscommdemo.htm