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

使用 TComm 出現 "Error Opening Serial Port" 問題

尚未結案
kadlac
一般會員


發表:18
回覆:30
積分:9
註冊:2004-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-04 19:44:13 IP:61.219.xxx.xxx 未訂閱
大家好! 我使用 TComm 去控制撥號網路,有時後會出現 "Error Opening Serial Port" 及 " Cannot setup Comm Buffer" 問題, 造成無法開啟通訊埠 , 請問應該如何處理, 才能避免此一狀況, 而可以繼續使用撥號網路? 或是在發生"Error Opening Serial Port" 及 " Cannot setup Comm Buffer"時 , 可以呼叫什麼函數去reset Port 嗎? 用Comm1->PortOpen=true 或Comm1->portOpen=false 好像不行 因為似乎就是利用PortOpen 造成的 Error Message.... 感謝大家的幫忙, 謝謝囉!
dllee
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-17 08:25:39 IP:211.76.xxx.xxx 未訂閱
應該是您所指定的 COM Port 已被其他程式占用,或是前次使用沒有正常關閉。 您可以在程式啟動前先試試 ■【BCB】【發表】系統 COM Port 列表對應的實體位置及是否占用   http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33626 確認指定的 COM Port 沒人使用,再啟動您的程式確認不是 COM Port 已被占用的問題。    在 Windows 除非使用特殊的 COM Port driver 否則無法多個程式同時使用 1 個 COM Port。    視動科技 VMASK - ViewMove Automation Software Kernel 發表人 - dllee 於 2004/08/17 08:26:53
------
http://www.ViewMove.com
kadlac
一般會員


發表:18
回覆:30
積分:9
註冊:2004-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-17 09:54:06 IP:61.219.xxx.xxx 未訂閱
謝謝您的幫忙!!    我表達得不是很清楚 , 造成您的誤解 ,真不好意思   其實在程式開啟時我都會先試試 Port 有無開啟, 然後才會進行程式的後續動作    目前發展的程式, 需要不斷的開關Com port, 程式架構如下,     void __fastcall TForm1::Button1Click(TObject *Sender) { int i; for (i=1;i<1000;i ) { if (Comm1->PortOpen==false) {Comm1->PortOpen=true;} Sleep(1000); 工作一;//做FTP if (Comm1->PortOpen==true) {Comm1->PortOpen=false;} Sleep(1000); 工作二; } } 所以出現 "Error Opening Serial Port" 及 " Cannot setup Comm Buffer" 是程式進行一段時間 (Maybe 一天) 之後的結果 目前我使用的元件為TComm (文魁 書上附的) , FTP 元件是 BCB 6.0 內建的IDFTP 元件 我在猜有無可能是TComm的問題? 有點想換換其他的Comm元件試試, 在板上看到很多人的討論 , 不知是用SPComm 還是 MSComm 較好? 或是TComm 改用多執行緒方式(參考下列網址) http://delphi.ktop.com.tw/topic.php?topic_id=36692 不過我不大會用...
dllee
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-18 10:47:23 IP:220.139.xxx.xxx 未訂閱
我不清楚,為什麼您 COM Port 要開開關關,一般都是開到結束再關。 COM Port 在開關的過程,如果您下關的指令,還沒關好,雖然您有 Sleep(1000),但您能確定「每次」都能在 1 秒內關完嗎?只有要一次超過 1 秒,那接下來自然就開不起來。請注意: COM Port 有沒有關好是由系統決定,不是您的程式決定。 最好是改程式架構,看能不能不要開開關關。 不然就是您在關後,再開之前要確認系統已經把 COM Port 關好,再開, 而不要用 Sleep 的方式。    視動科技 VMASK - ViewMove Automation Software Kernel 發表人 - dllee 於 2004/08/18 10:49:16
------
http://www.ViewMove.com
kadlac
一般會員


發表:18
回覆:30
積分:9
註冊:2004-07-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-19 19:06:06 IP:220.134.xxx.xxx 未訂閱
謝謝dllee大大的回應 您的建議很好,我會試著修改程式架構 其實我也不願意把 port 開開關關 能避之則避之....
系統時間:2024-04-30 2:51:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!