線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2143
推到 Plurk!
推到 Facebook!

RS232接收0x00的問題

尚未結案
croquet
一般會員


發表:2
回覆:3
積分:1
註冊:2004-07-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-23 20:46:05 IP:163.28.xxx.xxx 未訂閱
各位前輩你們好: 小弟在撰寫RS232通訊時發現無法接收0x00,但是Windows內建的超級終端機卻可以,並且在使用過超級終端機後,小弟的RS232程式就可以開始接收0x00了。找過一丠網路,但是沒有明確的解決方法,不知道是否有經驗的前輩能指點一下,謝謝。
dllee
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-04 17:07:52 IP:220.139.xxx.xxx 未訂閱
那是您的 RS232 元件有問題,可能是元件本身的問題或是元件設定上的問題。 您可以到 Torry's Delphi Pages http://www.torry.net/pages.php?id=198 或是類似的元件網站找到一大堆 RS232 元件。 您可以試試不同的元件之間的差異性,與您目前所用的元件作比較。    吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP OpenPLC - IEC61131-3 GeeXboX LiveCD 媒體播放器
------
http://www.ViewMove.com
croquet
一般會員


發表:2
回覆:3
積分:1
註冊:2004-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-11 18:54:14 IP:163.28.xxx.xxx 未訂閱
dllee您好: 小弟的RS232通訊是使用Windows API與Overlapped I/O方式去做的,並不是使用元件。當時並沒有非常完整的去了解那些實作方式,不過做出來了就拿來用了,是後來才偶然發現有這樣的問題。請問有可能是哪裡有問題嗎?謝謝。
dllee
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-11 19:08:09 IP:211.76.xxx.xxx 未訂閱
對於 RS232 API 我不了解... 我建議您到 Torry's Delphi Pages http://www.torry.net/pages.php?id=198 或是類似的元件網站找附原始碼的 RS232 元件回來參考比較。 我的經驗是,開檔的參數似乎每個 RS232 元件都不太一樣, 但不同的參數其結果就會不同,您可以比較一下,或者試用一下別人的元件, 這樣也可以交叉比較,找出自己寫的模組是否有其他的問題。    吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP OpenPLC - IEC61131-3 GeeXboX LiveCD 媒體播放器
------
http://www.ViewMove.com
kcin
一般會員


發表:0
回覆:18
積分:3
註冊:2005-01-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-11 19:11:47 IP:220.130.xxx.xxx 未訂閱
既然是你自己寫的接收 請查看接收後的處裡 這應該是你的邏輯上的問題 不知你是如何判斷接收資料數目的計算方式 是以strlen計算資料的長度 還是以實際接收的BYTE數計算
croquet
一般會員


發表:2
回覆:3
積分:1
註冊:2004-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-11 20:50:28 IP:163.28.xxx.xxx 未訂閱
傷腦筋啊... 小弟偶然發現這個問題是在之前。 現在同一支執行檔,同一台電腦又沒有這個問題了(即使重開機)。 不過還是很感謝dllee跟kcin大大的意見。 下次若能id出bug發生的條件,會遵循dllee大大的方式去比對,再回來報告。 to kcin大大: 我是以ReadFile的lpNumberOfBytesRead作為判斷的。
kcin
一般會員


發表:0
回覆:18
積分:3
註冊:2005-01-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-12 14:52:41 IP:220.130.xxx.xxx 未訂閱
既然是參考lpNumberOfBytesRead 那就剩下一個問題了 就是設定的參數不對 baud rate與data bit 一定是對的 否則無法接收資料 剩下的Parity , star bit 用過終端機後程式正常 會不會是你根本沒設定這些參數呢
croquet
一般會員


發表:2
回覆:3
積分:1
註冊:2004-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-12 17:12:32 IP:163.28.xxx.xxx 未訂閱
to kcin大大: 小弟是將此傳輸元件寫成一個class,並已覆蓋掉預設建構子,必須要填入參數才能初始化成功。所以應該不會有這個問題。
pokemf
一般會員


發表:5
回覆:12
積分:3
註冊:2002-05-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-08-22 16:43:07 IP:210.192.xxx.xxx 未訂閱
croquet你好: 我與你遇到同樣的問題,後來解決了,我的辦法不是換元件,我用了笨方法,是依讀取的字串長度,強迫讀取字元,那樣就可以跳過 0x00 了,目前使用正常,但不知到以後有沒有問題.請各位大大提供進一步的意見.
系統時間:2024-05-05 19:34:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!