delphi - 读命令

标签 delphi tcomport

我正在尝试从串行线RS232上的主机读取一个简单的字符串。
两者的接收-传输参数相同:

Baudrate: 9600;
Data: 8bit;
Parity: None;
Stop: 1bit;
Flow Control: None;


我尝试发送此字符串:

!A243B324C213D300#

我用 '!'和“#”作为标题,并完成操作以确保将完全接收到该字符串。
问题是我可以接收到第15个字符(3)为止的字符串。

我知道这是因为如果我使用以下代码:

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
begin
 ComPort1.ReadStr(Str, Count);
 memo1.Lines.Add(str);
end;


我再看看吧



!A243B324C213D3

00#



我试图扩展comport的缓冲区,但没有结果。

那么,为什么我一次也收不到完整的琴弦?

我在这里找到了这个库,到目前为止它还可以正常工作:

http://sourceforge.net/projects/comport/

最佳答案

带有TComPort组件的还有另一个组件:TComDataPacket。只需将其连接到TComPort,设置StartString和StopString属性,然后使用onPacket事件获取完整数据。

例:

...
    ComDataPacket1.Comport := Comport1;
    ComDataPacket1.StartString := '!';
    ComDataPacket1.StopString := '#';
    ComDataPacket1.onPacket := ComDataPacket1Packet;
...

//this is real code from one of my applications where I use it for barcode reader service
procedure TDM.ComDataPacket1Packet(Sender: TObject; const Str: string);
begin
     BarCodeReader.Barcode := Str;  
end;

关于delphi - 读命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436319/

相关文章:

Delphi IDE 在执行安装包后挂起

delphi - Delphi 10.3 控制台应用程序中的 Tcomport

delphi - 在 Delphi 的线程中使用串行端口组件 TComPort (v4) 中的事件?

delphi - 如果 Scrollbar.visible := False?,如何通过 .Perform() 或 SendMessage 滚动滚动框

delphi - 如何在 Delphi 中用稳定排序替换 StringList.Sort?

delphi - 如何在函数内添加查询

java - 将参数从 Delphi 客户端传递到 Java Webservice

Java:串行端口异常-端口正忙

delphi - Delphi TComPort WriteAsync