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

請問如何偵測出RS232 port 是否為空接狀態?

 
cccheng
一般會員


發表:8
回覆:19
積分:5
註冊:2002-05-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-05-30 10:38:09 IP:211.74.xxx.xxx 未訂閱
系統上有幾個Com port是可以開看看..... 但並不代表此port不是空接狀態.... 如並不知道為空接狀態...而讀入Com port會造成永遠讀不到... 請問可有辦法解決...?
阿子
站務副站長


發表:120
回覆:230
積分:201
註冊:2002-03-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-05-30 13:38:31 IP:61.221.xxx.xxx 未訂閱
cccheng兄 看看這是不是你要的 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18291 從思考取勝一切~q
------
從思考取勝一切~q
天外來客
初階會員


發表:22
回覆:199
積分:44
註冊:2001-11-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-05-30 14:34:47 IP:211.74.xxx.xxx 未訂閱
謝謝..可能不是...這文和 (delphi與rs-232 內chapter 3) 所講的類似... 再請問為何 ClearCommError(hComm,dwError,@CS); ReadFile(hComm, inbuff,cs.cbInQue,cs.cbInQue,nil); 在delphi中單步執行可readfile成功但compiler後卻不能正確readfile呢?
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-05-30 15:02:35 IP:192.168.xxx.xxx 未訂閱
引言: 系統上有幾個Com port是可以開看看..... 但並不代表此port不是空接狀態.... 如並不知道為空接狀態...而讀入Com port會造成永遠讀不到... 請問可有辦法解決...?
可否請問您是要接那類型的設備需要檢查空接狀態? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
dllee
站務副站長


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-05-30 17:10:56 IP:210.243.xxx.xxx 未訂閱
不太清楚您的應用是什麼,以小弟的經驗,通常機台中 COM Port 會接什麼裝置是已知的,而在機台開機啟動時,程式就會向對應的 COM Port 發出 Reset 或 Initialize 的指令給外部裝置,如果在一定的時間內沒有收到回應(TimeOut),那就表示外部裝置有問題或沒接好。 一般的 COMPort 元件應該都會有提供 TimeOut 的機制吧,如果沒有,那就自己用一個 Timer 作也是很簡單的。
------
http://www.ViewMove.com
weber
初階會員


發表:24
回覆:56
積分:26
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-05-30 19:47:59 IP:61.225.xxx.xxx 未訂閱
試著檢查Comport的 CTS 和 DSR 信號, 一般來講,接 Comport 的設備,若有 開機 DSR 會 On , Ready 時CTS 信 號會 On.(當然這得看你的設備,因為 有的設備只有 Tx , Rx ,Gnd 三條線)
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-05-30 21:12:48 IP:192.168.xxx.xxx 未訂閱
引言: 系統上有幾個Com port是可以開看看..... 但並不代表此port不是空接狀態.... 如並不知道為空接狀態...而讀入Com port會造成永遠讀不到... 請問可有辦法解決...?
我是採用 function TComm.GetModemState : DWORD; var dwModemState : DWORD; begin if not GetCommModemStatus( hCommFile, dwModemState ) then Result := 0 else Result := dwModemState end; 若傳回0表示接線脫落! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
cccheng
一般會員


發表:8
回覆:19
積分:5
註冊:2002-05-30

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-06-03 11:33:19 IP:211.74.xxx.xxx 未訂閱
..GetCommModemStatus 方法我試還是不行....不知那有出問題..... 但 dllee 兄:提議很好... 雖然前提假設我們不知各 com port 接何物.... 且使用者可能隨時拔插的狀態....為設計前提..... 問題已經解決了..... 我用 TCom1:=TTCom1.Create(False); TCom2:=TTCom2.Create(False); 的方法去偵測 TimeOut or 錯誤 再行判斷即可......
系統時間:2024-04-27 11:55:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!