我最近用TComPort控件完成计算机与转速表的通讯,给转速表发送数据01 03 10 04 00 01 C1 0B,
接收时应该收到7个字节01 03 02 00 01 79 84 ,但现在只能收到6个字节,
如果应该收8个字节时,现在只能收到7个,请问这是什么原因??
接收时应该收到7个字节01 03 02 00 01 79 84 ,但现在只能收到6个字节,
如果应该收8个字节时,现在只能收到7个,请问这是什么原因??
解决方案 »
- 流中字符串的替换
- 如何将excel中的宏嵌入到delphi中
- Ehlib3.0中的DBLookupComboboxEh控件可不可以编辑字段值而不采用选值的方式?
- 请问如何判断现在窗口是处于最大化的????
- 关于MIDAS,MTS,COM+和多层结构的讨论
- 请各位老大看看一个delphi数据库连接问题
- 如果把Delphi应用做成NT下的一个服务程序?
- 如何操作cxDBImageComboBox
- 李维的delphi书是什么出版社出的?誰能告訴我?
- 调用某一个form,在form关闭时,想要带出form上的某个控件(如edit1.text)的值给当前调用它的form用?怎么办?
- 这样的录入该如何实现
- 没分可给了,但我还是有问题,请帮忙,指针的问题
procedure TForm1.Button1Click(Sender: TObject);
var
event:TComEvents;
tmpbuf , data :string;
tmpEvent : TEvent;
rbuf :array[0..15] of byte;
i :integer;
hd:Cardinal;
begin
Comport1.BaudRate := br9600;
Comport1.Port :='COM2';
Comport1.Events :=[];
ComPort1.FlowControl.ControlDTR := dtrEnable;
ComPort1.FlowControl.ControlRTS := rtsEnable;
Comport1.Open;
//·¢ËÍÊý¾Ý
sendToNB(1); event :=[evRxChar];
tmpEvent := TEvent.Create(nil,true,false,'');
hd := tmpEvent.handle;
Comport1.WaitForEvent(event,hd,1000); if evRxChar in event then
begin
data :='';
tmpbuf :=''; Comport1.ReadStr(tmpbuf,Comport1.InputCount);
showmessage(tmpbuf); if length(tmpbuf) > 0 then
begin
for i := 1 to length(tmpbuf) - 1 do
begin
rbuf[i] := ord(tmpbuf[i]);
data := data + IntToHex(rbuf[i] , 2) + ' ';
end;
tvalue := getNbValue(rbuf);
end;
memo1.Lines.Add('');
memo1.Lines.Add(data);
edit3.Text := FloatToStr(tvalue);
end;end;
此时 Comport1.InputCount 的字节数只是一部分,所以你只能获取
一部分的数据,但后续的数据还是存放在串口缓冲区中,当下载再进行
接收时就会获取上次的字节了。 我一般不使用 tmpEvent := TEvent.Create(nil,true,false,'')
而是直接
ComPort1.Write
sleep
ComPort1.rRead