为什么通信老不对
为啥通信老不对
procedure TForm3.Comm1ReceiveData(Sender: TObject; Buffer: PWideChar;
BufferLength: Word);
var
pStr : PChar;
begin
pStr := Buffer;
memo2.Lines.Add(pStr);
end;
TPCOMM comm1属性代码:
object Comm1: TComm
CommName = 'COM4'
XonLimit = 500
XoffLimit = 500
ByteSize = _8
Parity = None
StopBits = _1
XonChar = #17
XoffChar = #19
ReplacedChar = #0
ReadIntervalTimeout = 100
ReadTotalTimeoutMultiplier = 0
ReadTotalTimeoutConstant = 0
WriteTotalTimeoutMultiplier = 0
WriteTotalTimeoutConstant = 0
OnReceiveData = Comm1ReceiveData
Left = 48
Top = 256
end
上下位机波特率都为9600 ,异步通信,8位数据,禁止校验位,1位停止位。
比如发送:上位机发送efead 然后接收得到下面乱码,得到的数据也不全。下位机直接发送,情况也类似下面的接收结果。
eꮫꮫꮫꮫﻮﻮﻮ
fꮫꮫꮫꮫﻮﻮﻮﻮﻮﻮﻮ
eꮫꮫꮫꮫﻮﻮﻮ
用串口助手都比较正常,为啥自己弄的不对?
------解决方案--------------------
PAnsichar
------解决方案--------------------
查看下你的BufferLength
------解决方案--------------------
是这个原因
procedure TForm3.Comm1ReceiveData(Sender: TObject; Buffer: PWideChar;
BufferLength: Word);
var
pStr : PChar;
begin
pStr := Buffer;
memo2.Lines.Add(pStr);
end;
TPCOMM comm1属性代码:
object Comm1: TComm
CommName = 'COM4'
XonLimit = 500
XoffLimit = 500
ByteSize = _8
Parity = None
StopBits = _1
XonChar = #17
XoffChar = #19
ReplacedChar = #0
ReadIntervalTimeout = 100
ReadTotalTimeoutMultiplier = 0
ReadTotalTimeoutConstant = 0
WriteTotalTimeoutMultiplier = 0
WriteTotalTimeoutConstant = 0
OnReceiveData = Comm1ReceiveData
Left = 48
Top = 256
end
上下位机波特率都为9600 ,异步通信,8位数据,禁止校验位,1位停止位。
比如发送:上位机发送efead 然后接收得到下面乱码,得到的数据也不全。下位机直接发送,情况也类似下面的接收结果。
eꮫꮫꮫꮫﻮﻮﻮ
fꮫꮫꮫꮫﻮﻮﻮﻮﻮﻮﻮ
eꮫꮫꮫꮫﻮﻮﻮ
用串口助手都比较正常,为啥自己弄的不对?
------解决方案--------------------
PAnsichar
------解决方案--------------------
查看下你的BufferLength
------解决方案--------------------
是这个原因