[問題] 如何知道收到的資料parity是否為mark
最近在處理一個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)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章