SPCOMM 接收方面問題 |
尚未結案
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
使用SPCOMM來接收設備資料
但接收卻出現了一點問題
我發現和接收反應時間有關
我接收反應設很短
問題如下 原本資料是
1111111111111111
2222222222222222
3333333333333333
4444444444444444 當反應時間內只接收了
1111111111111111
22222222222222
和下一次接收造成了落差 卻接收為
1111111111111111
22222222222222
22
3333333333333333
4444444444444444 是否有辦法解決呢 程式碼如下
void __fastcall TFormMain::Comm1ReceiveData(TObject *Sender,
Pointer Buffer, WORD BufferLength)
{
String bhu7 = (char *) Buffer;
TStrings *sk=new TStringList;
sk->Add(bhu7);
Memo1->Lines->AddStrings(sk);
delete sk;
}
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
您好: PO程式碼的方式與版規說明請參考下面連結,煩請修改謝謝您的配合
> 程式的問題< class="code">
void __fastcall TFormMain::Comm1ReceiveData(TObject *Sender,
Pointer Buffer, WORD BufferLength)
{
String bhu7 = (char *) Buffer;
TStrings *sk=new TStringList; //這行移到FormMain的建構函式中
sk->Add(bhu7);
Memo1->Lines->AddStrings(sk);
delete sk; //這行移到FormMain的解構函式中
}
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
|
derrenbol1
中階會員 發表:5 回覆:113 積分:93 註冊:2004-12-09 發送簡訊給我 |
To yachu721:
這種情況應算是很平常; 因為UART在傳送接收上會不同步.
不僅你接收反應時間, 傳送端也是會有影響. 你認為應該將接
收反應時間調較短些, 但若調太短的話, 你的顯示資料將可能
變成:
111111111 11111112 2222...這樣類似的情況; 建議你是自行於Comm1ReceiveData內調整顯 示; 依你的例子, 你可以先將送過來的資料存到另一個Buffer 去, 存完後判斷其長度是否大於16, 是的話則將Buffer內0~15 的資料顯示到Memo1, 再調整Buffer. |
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
|
derrenbol1
中階會員 發表:5 回覆:113 積分:93 註冊:2004-12-09 發送簡訊給我 |
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
|
derrenbol1
中階會員 發表:5 回覆:113 積分:93 註冊:2004-12-09 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
您好:
在Comm1ReceiveData事件當中,因該可以知道[這次接收的資料長度]有多少
所以程式改成
void __fastcall TFormMain::Comm1ReceiveData(TObject *Sender, Pointer Buffer, WORD BufferLength) { for (i=0; i<資料長度(我不確定是不是BufferLength); i ) { String bhu7 = (char *) Buffer; sk->Add(bhu7); Memo1->Lines->AddStrings(sk); Buffer指標的位址 1,取得下一筆資料 } }順心 |
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
derrenbol1大大您好
資料的確是沒有一個明確的終止點 taishyang大大您好
程式碼還是不行
您的意思是取得這次的長度
然後一個字元一個字元丟入嗎
我將修改為
vector還是不行呀 |
derrenbol1
中階會員 發表:5 回覆:113 積分:93 註冊:2004-12-09 發送簡訊給我 |
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
|
yachu721
初階會員 發表:51 回覆:98 積分:44 註冊:2003-07-13 發送簡訊給我 |
謝謝大大們的指教
已經有找到出錯的原因
原因是資料的結尾SPCOMM還會加上\r\n
不知SPCOMM是否可以設除
所以程式碼修改如下
vector發表人 - yachu721 於 2005/11/10 14:48:25 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |