1,183
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.tmReceiveTimer(Sender: TObject);
var
Temp : String;
inbuff : array[0..2047] of Char;
nBytesRead, dwError : DWORD;
cs : TCOMSTAT;
begin
ClearCommError(hComm, dwError, @cs);
//若未接收到数据或者接收的数据大于缓冲区大小责推出
if cs.cbInQue = 0 then Exit;
if cs.cbInQue > sizeof(inbuff) then
begin
PurgeComm(hComm, PURGE_RXCLEAR);
Exit;
end;
ReadFile(hComm, inbuff, cs.cbInQue, nBytesRead, nil);
Temp := Copy(inbuff, 1, cs.cbInQue);
mReceive.Text := mReceive.Text + Temp;
//将memo组件的显示位置移到最下端
mReceive.SetFocus;
mReceive.SelStart := Length(mReceive.Text);
mReceive.SelLength := 0;
end;
BOOL ClearCommError(
HANDLE hFile, // handle to communications device
LPDWORD lpErrors, // error codes
LPCOMSTAT lpStat // communications status
);
typedef struct _COMSTAT {
DWORD fCtsHold : 1;
DWORD fDsrHold : 1;
DWORD fRlsdHold : 1;
DWORD fXoffHold : 1;
DWORD fXoffSent : 1;
DWORD fEof : 1;
DWORD fTxim : 1;
DWORD fReserved : 25;
DWORD cbInQue;
DWORD cbOutQue;
} COMSTAT, *LPCOMSTAT;