我试图在串行行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/
发布于 2014-03-16 15:42:56
与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;https://stackoverflow.com/questions/22436319
复制相似问题