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

請問TComm的onReceiveData接收問題

尚未結案
bt1
一般會員


發表:38
回覆:14
積分:10
註冊:2003-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-20 15:54:40 IP:140.124.xxx.xxx 未訂閱
你好:    我程式: void __fastcall TForm1::Comm1ReceiveData(TObject *Sender)  { int i; ByteReceive=Comm1->ReadInputByte();  for(i=0;i
bt1
一般會員


發表:38
回覆:14
積分:10
註冊:2003-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-20 15:57:37 IP:140.124.xxx.xxx 未訂閱
sorry.. 程式: int i; ByteReceive=Comm1->ReadInputByte();  for(i=0;i
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-22 17:51:29 IP:218.160.xxx.xxx 未訂閱
引言: 問題:1.變數q是全域變數,我用來測ReceiveData事件執行次數,結果我接一筆 長度10 , 資料為:0x02 0x01 0x20 0x05 0x00 0x01 0x00 0x00 0x00 0x01 結果q=17,所以我想請問,不是否不管資料多長,在連續傳(7~200byte)下, ReceiveData事件應該只是發生一次才對,為什麼會累計這麼多次?????
一般ReceiveData事件是多少時間觸發一次,而每次可能收到幾個bytes不等, 但你必須把它組合成一筆資料.
引言: 2.在程式中我以用rdata[]去把資料讀出,為什麼在沒有第二筆資料進來時, rs232裡面不是應該沒資料了,為什麼資料還在?????
似乎還有個read之類的function,因為你的程式是直接複製它的字元,不是用它read 的 function.
引言: 4.有時接一筆比較長的資料(80~100byte)時,用ReceiveData事件去接收, 結果所接到的資料少了一些,為什麼???
有可能是buffer大小的問題,也有可能來不及接收資料掉了. 用rs232接收資料,資料漏掉是正常的,所以一定要作資料的檢查checksum,還有如何判斷,哪個地方是資料的開始,也是很傷腦筋的,一般會把資料先編碼, 把0xff用0xfe0xff兩個bytes表示,如此編碼後就不可能有兩個0xff連續出現,我們就可以用兩個0xff當成接收端的資料開始,接收後還需解碼和checksum. 之後還會有些問題等著你,祝你好運.
系統時間:2024-05-09 0:38:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!