線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2964
推到 Plurk!
推到 Facebook!

Barcoder reader (RS232)收到資料切斷

答題得分者是:jcjroc
helsing
一般會員


發表:7
回覆:15
積分:4
註冊:2004-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-01-13 20:20:56 IP:59.115.xxx.xxx 訂閱
各位大大,小弟透過RS232讀取從Barcoder reader 掃描出來的條碼,秀在視窗上,可是是用time去觸發,每0.2秒去讀取一次,但是發現資料有被切斷的問題
例如每筆都是10碼,但可能中間就有一個號碼會被切斷:如下,請問不可以用時間嗎??那該如何去觸發呢??隨時知道有資料進來呢??以下如何設置比較好,謝謝

TimeOut.ReadIntervalTimeout = 0;
TimeOut.ReadTotalTimeoutMultiplier = 0;
TimeOut.ReadTotalTimeoutConstant = ReadTotalTimeout; //100; //總讀取時間
TimeOut.WriteTotalTimeoutMultiplier = 0;
TimeOut.WriteTotalTimeoutConstant = 500; //(總寫入時間 time =0.5秒)

第1筆 1111111111111111
第19筆121111111
1111111
-----------------------------------------------------------------------------------
String Temp;
char inbuff[1024];
DWORD nBytesRead, dwEvent, dwError;
COMSTAT cs;
//取得狀態
ClearCommError(hComm, &dwError, &cs);
// 資料是否大於準備的Buffer
if(cs.cbInQue>sizeof(inbuff))
{
PurgeComm(hComm, PURGE_RXCLEAR); //清除com資料
return;
}
ReadFile(hComm, inbuff, cs.cbInQue, &nBytesRead, NULL); //接受com資料
if (nBytesRead == 0 )
return;
i ;
Label1->Caption=IntToStr(i);
//將資料移到變數中
inbuff[cs.cbInQue]='\0';
//將資料顯示於memo上
Label2->Caption=inbuff;
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-01-17 17:56:49 IP:210.61.xxx.xxx 訂閱
不要用timer 去讀
要用 thread 去等 comport 的 notify
這樣才不會lose data
系統時間:2024-04-25 15:04:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!