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

有關 Com port 傳送資料的問題

答題得分者是:axsoft
tsai0823
一般會員


發表:11
回覆:12
積分:4
註冊:2003-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-17 09:26:16 IP:61.222.xxx.xxx 未訂閱
axsoft 您好: 引言: -------------------------------------------------------------------------------- tsai0823您好: 如果您要RealTime去讀資料建議用Thread的方式去讀取,這裡有篇文章可以給您參考看看 Serial Communication with Borland C Builder http://www.traverse.com/people/poinsett/bcbcomm.html 範例下載: http://www.traverse.com/people/poinsett/bcbcomm.zip 實不知您在實做過程發生甚麼問題,只能用猜的! -------------------------------------------------------------------------------- HAVE A NICE DAY FOR YOU 發表人 - axsoft 於 2003/06/13 14:19:49 ===================================================================== 請問各位前輩 以這個例子來說的話(bcbcomm.zip), 請問我要用什麼方式進行UPDATE 的動作, 我想要從我的程式中傳一比資料給硬体(也是透過 rs232, 同一個COM port) 還是說Thread 就只是可以讀取資料而以 如果我想寫資料(從電腦透過 rs232 到硬体) 是不是有其它的元件可以用的上的呢 謝謝
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-17 11:13:55 IP:61.218.xxx.xxx 未訂閱
引言: 請問各位前輩 以這個例子來說的話(bcbcomm.zip), 請問我要用什麼方式進行UPDATE 的動作, 我想要從我的程式中傳一比資料給硬体(也是透過 rs232, 同一個COM port) 還是說Thread 就只是可以讀取資料而以 如果我想寫資料(從電腦透過 rs232 到硬体) 是不是有其它的元件可以用的上的呢 謝謝
您的前一篇發言實在說的不清不楚,所以我也沒再做回應,就像這次的Update還是講的不清楚    1.您說的Update動作是指硬體還是畫面呢?如果是硬體接收部分您可能要去偵測RS-232的狀態的,來確認目前是接收/傳送/Busy的狀態,如果畫面的Update就要看您的需求了,這沒圖例或實體的東西,恐怕很難描述    2.您要傳資料給Com Port,這是沒問題的,只需對COM Port下Command就可以了    3.Thread的應用很廣,主要是幫忙安排執行緒的優先權順序執行(因為你說要RealTime所以我才會建議你用Thread)    4.使用Thread也要注意會不會干擾程式的運作,不然讀值跟送Command的順序錯誤.得到的結果可能出乎意料之外    5. Thread相關文章你可以參考站內的相關文獻    6. http://www.traverse.com/people/poinsett/bcbcomm.zip 這個範例本身就
   有Send Command至Com Port的能力,你只是沒發現而已,建議您把RS232的工作原理研究一下,您會比較好寫程式.
     <><>HAVE A NICE DAY FOR YOU    發表人 - 
        
tsai0823
一般會員


發表:11
回覆:12
積分:4
註冊:2003-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-17 11:40:22 IP:61.222.xxx.xxx 未訂閱
引言: 您的前一篇發言實在說的不清不楚,所以我也沒再做回應,就像這次的Update還是講的不清楚 1.您說的Update動作是指硬體還是畫面呢?如果是硬體接收部分您可能要去偵測RS-232的狀態的,來確認目前是接收/傳送/Busy的狀態,如果畫面的Update就要看您的需求了,這沒圖例或實體的東西,恐怕很難描述 2.您要傳資料給Com Port,這是沒問題的,只需對COM Port下Command就可以了 3.Thread的應用很廣,主要是幫忙安排執行緒的優先權順序執行(因為你說要RealTime所以我才會建議你用Thread) 4.使用Thread也要注意會不會干擾程式的運作,不然讀值跟送Command的順序錯誤.得到的結果可能出乎意料之外 5. Thread相關文章你可以參考站內的相關文獻 6. http://www.traverse.com/people/poinsett/bcbcomm.zip 這個範例本身就 有Send Command至Com Port的能力,你只是沒發現而已,建議您把RS232的工作原理研究一下,您會比較好寫程式. 發表人 - >< face="Verdana, Arial, Helvetica"> 您好, 現在我的進度做到所有的Form可以同步更新 但是只要我試著將 Edit1->Text 的內容傳給硬体, 就會造成當機的情形 以下的我寫的code.... 有什麼到方我疏忽了嗎? String Temp,i; char *SendData; int i; unsigned long lrc,BS; SendData=Edit1->Text.c_str(); BS =strlen(Edit1->Text.c_str()); if ((hComm) && (Edit1->Text != "")) { for (i=BS;i>=1;i--) { WriteFile(hComm,SendData,BS,&lrc,NULL); } } Edit1->Text = "";
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-17 11:54:45 IP:61.218.xxx.xxx 未訂閱
試試看
  String Temp,i;
  char *SendData;
  int i;
  unsigned long lrc,BS;      SendData=Edit1->Text.c_str();
  BS =strlen(Edit1->Text.c_str());
  if ((hComm) && (Edit1->Text != ""))
  {
     for (i=BS;i>=1;i--)
     {
          Application->ProcessMessages();
          WriteFile(hComm,SendData,BS,&lrc,NULL);
     }
  }
    Edit1->Text = "";
HAVE A NICE DAY FOR YOU 發表人 - axsoft 於 2003/06/17 11:55:43
tsai0823
一般會員


發表:11
回覆:12
積分:4
註冊:2003-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-17 11:58:55 IP:61.222.xxx.xxx 未訂閱
我現在改了一下我的程式.... 當我按下BitBtn時, 有時會有傳不過去的問題....造成短暫的當機 當又有資料從另一端過來時我的資也同時被送了過去....回復正常運作 String Temp; char *SendData; int i; unsigned long lrc,BS; SendData=Edit1->Text.c_str(); BS =strlen(Edit1->Text.c_str()); if ((hComm) && (Edit1->Text != "")) { // for (i=BS;i>=1;i--) //{ WriteFile(hComm,SendData,BS,&lrc,NULL); // } } Edit1->Text = "";
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-17 12:07:15 IP:61.218.xxx.xxx 未訂閱
tsai0823 您好:
 (1). 實看不出您的程式跟上一個程式差異在哪?
 (2). 當我按下BitBtn時, 有時會有傳不過去的問題....造成短暫的當機這個
      部分建議你去偵測Rs-232是否Busy
 (3). 在你的loop中加入Application->ProcessMessages();試試把控制權交出
      這樣你的畫面不會有當機的現像.    
HAVE A NICE DAY FOR YOU 發表人 - axsoft 於 2003/06/17 12:11:08
jackie07
一般會員


發表:13
回覆:28
積分:7
註冊:2002-04-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-20 08:52:43 IP:61.220.xxx.xxx 未訂閱
//// 設定time out 時間 COMMTIMEOUTS time_out ; time_out.ReadIntervalTimeout=MAXDWORD; time_out.ReadTotalTimeoutConstant=0; time_out.ReadTotalTimeoutMultiplier=0; time_out.WriteTotalTimeoutConstant=50; time_out.WriteTotalTimeoutMultiplier=5; SetCommTimeouts(hNewCommFile,&time_out); 你可以設定上述的time out 時間,如此 萬一rs-232 忙碌中,你的程式才不會被卡住~~~ time out 使用方法可參考 H
系統時間:2024-03-29 17:00:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!