串口编程(100分)

  • 主题发起人 主题发起人 fjqian
  • 开始时间 开始时间
F

fjqian

Unregistered / Unconfirmed
GUEST, unregistred user!
如何知道串口接收数据已经完成
我用的是PComm.dll
发一桢数据 返回的数据如果比较多,串口有可能分两至三次传输给我,
如果我延时时间不够,做判断时,认为这桢数据接收不正确马上就扔掉,重发
这样无形当中回浪费很多资源,请问用过PComm可否告之一二,我用过PComm的
事件触发函数不是很准确,所以采用延时的方法
 
不清楚你的数据量有多大?我的数据量最多一次640个数据都没有什么问题,更多我就没有试过了
 
我是用于远程通讯,通过基带Modem向终端要数据,本身具有延时
 
还有我想问resun,你是用延时的方法吗,用Sio_Read一次性就可以读出所有数据吗
 
对,是用sio_read一次读的,没有延时,不是远程通讯
或者如果你知道数据量,可以用sio_getch通过循环+延时一个一个读
 
或者试试这个
http://www.ararat.cz/synapse/
里的
http://www.ararat.cz/synapse/files/synaser.zip
有例子和帮助
 
1、如果你的数据包为定长,可以利用收到的数据字节数进行判断,数据包要设置包头包尾标志字节;
2、如果你的数据包不定长,可以在数据包的包头中增加此数据包的长度描述字,再加包尾;
可以使用一个字符串变量将收到的数据进行累加,然后对得到的结果字串进行处理。。。
 
串口数据判断一种如TRUECAT所说。加上个设备状态标志。。。这样就比较好

还有个就是考虑超时。。。不要把设备理想化,你去问它就一定给你正确答案,也许它会忙。
你就需要再发。。。
 
后退
顶部