有關 Com port 傳送資料的問題 |
答題得分者是:axsoft
|
tsai0823
一般會員 發表:11 回覆:12 積分:4 註冊:2003-06-12 發送簡訊給我 |
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 發送簡訊給我 |
引言: 請問各位前輩 以這個例子來說的話(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的工作原理研究一下,您會比較好寫程式. |
tsai0823
一般會員 發表:11 回覆:12 積分:4 註冊:2003-06-12 發送簡訊給我 |
引言: 您的前一篇發言實在說的不清不楚,所以我也沒再做回應,就像這次的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 發送簡訊給我 |
試試看
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 發送簡訊給我 |
我現在改了一下我的程式....
當我按下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 發送簡訊給我 |
|
jackie07
一般會員 發表:13 回覆:28 積分:7 註冊:2002-04-30 發送簡訊給我 |
//// 設定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
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |