Delphi Spcomm 串口通讯 为啥只能接受一条数据?
Delphi Spcomm 串口通讯 为啥只能接受一条数据?
问题描述:
下位机 51单片机 发送一段中文字符串, 用串口调试助手程序(上位机程序),能看到一行行的中文不停的采集到
证明:51单片机的串口程序正常,pc串口通讯也正常
我的delphi程序:
procedure SpCommInit(); //com3 波特率 数据位啥的都设置的和串口调试助手一样的
begin
form1.Comm1.CommName:='COM3';
form1.Comm1.BaudRate:=4800;
form1.Comm1.Parity:=None;
form1.Comm1.ByteSize:=_8;
form1.Comm1.StopBits:=_1;
form1.comm1.ReadIntervalTimeout:=100;
form1.Comm1.StartComm;
// form1.Comm1.Inx_XonXoffFlow := False;
// form1.Comm1.Outx_XonXoffFlow := False;
end;
procedure TForm1.BitBtn1Click(Sender: TObject); //设置一个连接Com 的按钮, 按下 即连接Com3 按钮自动失效
begin
SpCommInit();
form1.BitBtn1.Enabled:=false;
end;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; //Comm1ReceiveData事件 获取下位机上传的数 // 据,并追加到Memo中
BufferLength: Word);
var
receivedata:array of byte;
str:string;
begin
// sleep(100);//等待100ms,保证接收到所有数据
SetLength(str,BufferLength);
move(Buffer^,pchar(@str[1])^,BufferLength); //从缓冲区将数据拷贝出来
form1.Memo1.Lines.Add(str);
end;
////////////////现在的问题是,我一按下按钮后,Memo有时会显示一整条下位机传上来的完整字符串,有时是半条不完整的字符串
///有时干脆不显示
///但是要命的是 Comm1ReceiveData事件 只触发了一次,就啥也没有了,单片机还在不停的上传数据, 可是就是看不到触发事件产生的Memo中的任何变化,希望诸位大侠给予解决啊