delphi串口接收数据
场景:delphi串口接收数据有关问题
delphi串口接收数据问题
我用spcomm控件进行串口数据的接收和发送,但是现在有一个问题,在接收数据的时候,通过下位机发来的数据,正常是10个字节,但是不知道为什么有的时候接收的是9个字节,有的时候是10个,随机的接收不全,程序是下面这个样子
procedure Twelcome.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i: integer;
begin
viewstring:='';
move(buffer^,rbuf,bufferlength);
//检查校验和
if checksum(rbuf,bufferlength)=false then
exit;
//检查字头字尾
if valid(rbuf)=false then
exit;
//检验是否为命令条
if command(rbuf)=false then
exit;
//检查是否为指定站发来的信息
if not zh=rbuf[4] then
exit;
for i:=1 to bufferlength do
begin
viewstring:=viewstring+inttohex(rbuf[i],2);
end;
不知道这里有什么问题,是还要有一些判断之类的么?求帮助!
------解决方案--------------------
串口速度慢,接收完最好等几百毫秒再接收一次,以免漏掉滞后的数据
delphi串口接收数据问题
我用spcomm控件进行串口数据的接收和发送,但是现在有一个问题,在接收数据的时候,通过下位机发来的数据,正常是10个字节,但是不知道为什么有的时候接收的是9个字节,有的时候是10个,随机的接收不全,程序是下面这个样子
procedure Twelcome.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i: integer;
begin
viewstring:='';
move(buffer^,rbuf,bufferlength);
//检查校验和
if checksum(rbuf,bufferlength)=false then
exit;
//检查字头字尾
if valid(rbuf)=false then
exit;
//检验是否为命令条
if command(rbuf)=false then
exit;
//检查是否为指定站发来的信息
if not zh=rbuf[4] then
exit;
for i:=1 to bufferlength do
begin
viewstring:=viewstring+inttohex(rbuf[i],2);
end;
不知道这里有什么问题,是还要有一些判断之类的么?求帮助!
------解决方案--------------------
串口速度慢,接收完最好等几百毫秒再接收一次,以免漏掉滞后的数据