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

Com port 開關之問題

尚未結案
kadlac
一般會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-12 17:24:14 IP:61.219.xxx.xxx 未訂閱
各位大大您好!    我目前發展的程式, 需要不斷的開關Com port, 程式架構如下,     void __fastcall TForm1::Button1Click(TObject *Sender) {   int i;   for (i=1;i<1000;i ) { Comm1->PortOpen=true; 工作一; Comm1->PortOpen=false; 工作二; } } 呼叫之TComm Component如下: void TComm::OpenComm(void) { HANDLE hNewCommFile; String ComStr; char *COMNo; ComStr = "COM" IntToStr(1 FCommPort); hNewCommFile = CreateFile( ComStr.c_str(), GENERIC_READ | GENERIC_WRITE, 0, //not shared NULL, //no security OPEN_EXISTING, 0,//No Overlapped NULL //template ); if (hNewCommFile == INVALID_HANDLE_VALUE) ShowMessage("Error opening serial port"); if (!SetupComm( hNewCommFile, INPUTBUFFERSIZE, INPUTBUFFERSIZE )) { CloseHandle( hComm ); ShowMessage( "Cannot setup comm buffer" ); } } 因此我會遇到的問題是Port 開關多次之後, 會出現Error opening serial port 的訊息,也就是port 開不起來,或是port 還沒關 , 造成程式中斷, 請問各位大大,應該如何處理,才能強制把打不開的port繼續打開,使程式繼續下去,而不至於 中斷? 謝謝您的熱情幫忙!
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-13 15:58:29 IP:61.142.xxx.xxx 未訂閱
kadlac: 試試每次開關ComPort時Sleep(300);不需要太精確你自行調整。 接收傳送完畢也Sleep(300)一下下。 另外我建議接收傳送程式以多執行緒方式處理之! 請參考! Andy Chang
------
Andy Chang
kadlac
一般會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-13 16:26:09 IP:61.219.xxx.xxx 未訂閱
Andy兄您好! 謝謝您的幫忙,每次開關ComPort時我都有Sleep(3000); 不過還是沒用... 照樣Comm port error 不過您提到的多執行緒方法,我會試著try看看,謝謝! :)
系統時間:2024-04-30 6:34:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!