全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3078
推到 Plurk!
推到 Facebook!

有關RS232中的parity error問題。

尚未結案
chilanlin
一般會員


發表:3
回覆:10
積分:2
註冊:2004-01-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-11 21:00:25 IP:220.136.xxx.xxx 未訂閱
小弟有一個疑問, 以RS232(com port)為通訊,正常資料的讀取是以 VC 中的readfile的function來讀取, 但是當收到的資料被判斷為parity error時,使用readfile function卻收不到資料,請問一下這個資料內容我該如何收取??? 或是如何設定不要parity check?? p.s.我已經將fparity設成0,但是卻沒有作用,還是會產生parity error的錯誤訊息。
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-12 12:49:24 IP:211.23.xxx.xxx 未訂閱
chilanlin: 1.readfile應該是API Function沒錯吧.如果是ㄉ話.那收不到資料就是因為parity設定錯誤.parity是同位檢查這是一定要設定ㄉ. parity有四種參數Even,Mark,Odd,No parity 2.RS232是透過0.1.0.1來傳資料.同位檢查是判斷資料的可靠度. 所以當收到判斷為parity error時基本上該封包的可靠性是沒有ㄉ. 所以收不到資料是正常的.因為同位檢查已經錯誤ㄌ.
chilanlin
一般會員


發表:3
回覆:10
積分:2
註冊:2004-01-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-12 18:43:58 IP:61.222.xxx.xxx 未訂閱
雖然資料不正確或是不可靠, 但是我還是想要能夠收到資料,不知道有什麼辦法可以將錯誤的資料抓出來。
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-13 11:51:14 IP:61.218.xxx.xxx 未訂閱
chilanlin: 我記憶中,如果你RS232的基本設定如果是錯誤的. 應該是沒辦法讀到任何的資料. 資料會因為RS232電位校準LOSS掉.    下列有一各網址.是有關使用WINAPI存取RS232請參考 http://myweb.hinet.net/home5/finetech/TecDoc/Doc2/AcceRS232.htm
chilanlin
一般會員


發表:3
回覆:10
積分:2
註冊:2004-01-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-17 06:37:34 IP:61.228.xxx.xxx 未訂閱
我試過了這些設定,但是當parity error發生時,還是沒有辦法收到資料!! 不知道能不能直接關掉parity check的功能??
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-17 08:16:35 IP:211.76.xxx.xxx 未訂閱
依我的經驗,如果 parity check 已設定 No parity, 應該不會發生 parity error, 頂多只是收到垃圾資料而已。 不知道您是否有使用過其他現成的 COM Port 元件,如站上最多人使用的 SPComm(也有 Delhpi 原始碼可以參考),也許會比您自己 try 要省時省力。    視動科技 VMASK - ViewMove Automation Software Kernel 發表人 - dllee 於 2004/08/17 08:28:41
------
http://www.ViewMove.com
chilanlin
一般會員


發表:3
回覆:10
積分:2
註冊:2004-01-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-19 13:27:45 IP:61.222.xxx.xxx 未訂閱
以下是我發生parity error時的設定狀態, DWORD DCBlength=28 DWORD BaudRate=9600 DWORD fBinary=1 DWORD fParity=0 DWORD fOutxCtsFlow=0 DWORD fOutxDsrFlow=0 DWORD fDtrControl=1 DWORD fDsrSensitivity=1 DWORD fTXContinueOnXoff=1 DWORD fOutX=0 DWORD fInX=0 DWORD fErrorChar=0 DWORD fNull=0 DWORD fRtsControl=1 DWORD fAbort0 DWORD fDummy2=0 WORD wReserved=0 WORD XonLim= 512 WORD XoffLim=128 BYTE ByteSize=8 BYTE Parity=2 BYTE StopBits=2 char XonChar=17 char XoffChar=19 char ErrorChar=13 char EofChar=13 char EvtChar=13 WORD wReserved1=0 不知道是不是有哪裡需要改變的!?請各位指導一下! 謝謝
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-20 08:03:21 IP:211.76.xxx.xxx 未訂閱
您這些數值... 與 Parity 有關的有 2 個: DWORD fParity=0  BYTE Parity=2  是否需要把另一個也設 0 呢? 老實說,這些數值有些我還看不太懂  < href="http://www.ViewMove.com" target="blank">視動科技 VMASK - ViewMove Automation Software Kernel 發表人 - dllee 於 2004/08/20 08:04:19
------
http://www.ViewMove.com
chilanlin
一般會員


發表:3
回覆:10
積分:2
註冊:2004-01-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-20 20:31:06 IP:61.228.xxx.xxx 未訂閱
Parity=2 表示是even-parity,如果設為0表示為no-parity 但是這樣設定會造成flame error! 原來雙方溝通是以even parity來check, 但是其中一方並沒有處裡好parity的值,所以即使收到的data發生parity error,這些data也是正確的值,因此小弟才需要想盡辦法去收取所有的data,不管有沒有發生parity error。 當然沒有處裡好parity的那一方程式要修改有一些問題 ><"
chilanlin
一般會員


發表:3
回覆:10
積分:2
註冊:2004-01-17

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-25 12:26:40 IP:61.228.xxx.xxx 未訂閱
由於時間緊迫, 時在沒辦法在試下去, 解決的方式只能去修改錯誤的一方程式。 謝謝大家的回應。
系統時間:2024-04-30 4:27:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!