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

Comm ReadFile後 無法在sned資料

尚未結案
polom
一般會員


發表:15
回覆:14
積分:15
註冊:2010-08-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-02-22 11:08:05 IP:218.210.xxx.xxx 訂閱
各位前輩們:

小弟正在寫控制板的程式,遇到一個問題

控制板子上有24顆LED 我在第19顆下command時會收到不完整的訊息

再次對其他LED下command時就沒有反應了。

目前我的解決方式,收到這樣的錯誤訊息我就關閉COM PORT 重開

但不知是否有更好的方式呢?

感恩哦
下面是我讀寫的程式碼

write
[code cpp]
String temp ;
char *SendData ;
int ln ;
unsigned long lrc, BS ;
byte ch ;
COMSTAT Commstat ;
DWORD errors ;

if (hComm == 0)
return ;

DynamicArray ByteData ;
ByteData.Length = 5 ;
ByteData[0] = StrToInt(Edit1->Text) ;
ByteData[1] = StrToInt(Edit2->Text) ;
ByteData[2] = StrToInt(Edit3->Text) ;
ByteData[3] = StrToInt(Edit4->Text) ;
ByteData[4] = StrToInt(Edit5->Text) ;


for (int i=ByteData.Low; i<= ByteData.High;i )
{
ch = ByteData[i];
::WriteFile(hComm,&ch,1,&lrc,NULL);
ClearCommError(hComm, &errors, &Commstat) ;
}
PurgeComm(hComm, PURGE_TXCLEAR) ;
ReadRSData() ;
::ClearCommError(hComm, &dwError, &cs) ;
/*
if (cs.cbInQue > sizeof(inbuff))
{
PurgeComm(hComm, PURGE_RXCLEAR) ; //清空緩衝區
return ;
}
*/

::ReadFile(hComm, inbuff, 1, &nBytesRead, NULL) ;
tmpvalue = byte(inbuff[0]) ;
ActionEven(tmpvalue) ;
[/code]



read
[code cpp]
String temp ;
char inbuff[1] ;
DWORD dwError, nBytesRead;
COMSTAT cs ;
byte tmpvalue = 0 ;

::ClearCommError(hComm, &dwError, &cs) ;
/*
if (cs.cbInQue > sizeof(inbuff))
{
PurgeComm(hComm, PURGE_RXCLEAR) ; //清空緩衝區
return ;
}
*/

::ReadFile(hComm, inbuff, 1, &nBytesRead, NULL) ;
tmpvalue = byte(inbuff[0]) ;
ActionEven(tmpvalue) ;
[/code]

編輯記錄
polom 重新編輯於 2011-02-21 20:10:06, 註解 無‧
系統時間:2017-10-24 2:59:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!