回 帖 发 新 帖 刷新版面

主题:vc++2003 如何知道收到的资料parity是否为mark

最近在处理一个Serial通讯

1. 每次资料的第一个byte,对方会将parity设为Mark,而之后的资料就会设定Space
利用这个方式可以得知每次新资料是在哪个byte开始
网路查的结果是Address使用Mark,Data使用space
2. 我这边是设定parity为Space
3. 问题是不知道如何判断对方一直切换的parity是什麼

我目前使用的是VC++ 2003
现在我试了几天,仍然无法得知对方资料的parity是多少
我使用了以下的函式

以下失败:
1. ClearCommError
    抓取 DCB,但抓到的似乎是自己的Comport,parity没变化
    使用CE_RXPARITY做比对,有时候会判断到Parity的变化,但是弄出来有问题,
    久久才会探测到一次
2. GetCommModemStatus
    没反应
3. GetCommProperties
    对方的parity不管如何切换,我这边抓到的资讯都没变化

以下有反应:
1. SetCommMask(EV_ERR),搭配WaitCommEvent,
    如此会成功,但是我不能让它一直堵塞
2. GetCommModemStatus
    没反应
3. GetCommProperties
    对方的parity不管如何切换,我这边抓到的资讯都没变化

以下有反应:
1. SetCommMask(EV_ERR),搭配WaitCommEvent,
    如此会成功,但是我不能让它一直堵塞
    找不到有方式可以判断这个ERROR,却不会堵塞
2. GetCommMask和GetLastError
    使用也没反应

以下曾成功过:
DeviceIoControl(IOCTL_SERIAL_LSRMST_INSERT)
但只能适用於标准序列埠,用某些厂商扩充的序列埠就会失败
目前要应用在扩充的

谢谢

回复列表 (共1个回复)

沙发

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系摩客元亨 QQ908889846
2010年,中国网民突破了4亿,
网络游戏玩家超过了3亿,
互联网即将进入全民网游的时代

我来回复

您尚未登录,请登录后再回复。点此登录或注册