作者clarkman (凉雨)
站内Programming
标题[问题] 如何知道收到的资料parity是否为mark
时间Fri Feb 12 10:37:41 2010
最近在处理一个Serial通讯
每次资料的第一个byte,对方会将parity设为Mark
而之後的资料就会设定Space
利用这个方式可以得知每次新资料是在哪个byte开始
网路查的结果是Address使用Mark,Data使用space
我目前使用的是VC++ 2003
现在我试了几天,仍然无法得知对方资料的parity是多少
我使用了以下的函式
以下失败:
1. ClearCommError
抓取 DCB,但抓到的似乎是自己的Comport,parity没变化
使用CE_RXPARITY做比对,有时候会判断到Parity的变化,但是弄出来有问题,
久久才会探测到一次
2. GetCommModemStatus
没反应
3. GetCommProperties
对方的parity不管如何切换,我这边抓到的资讯都没变化
以下有反应:
1. SetCommMask(EV_ERR),搭配WaitCommEvent,
如此会成功,但是我不能让它一直堵塞
找不到有方式可以判断这个ERROR,却不会堵塞
2. GetCommMask和GetLastError
使用也没反应
以下曾成功过:
DeviceIoControl(IOCTL_SERIAL_LSRMST_INSERT)
但只能适用於标准序列埠,用某些厂商扩充的序列埠就会失败
目前要应用在扩充的
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.22.144.222
※ 编辑: clarkman 来自: 211.22.144.222 (02/12 12:52)