C
citydawn
Unregistered / Unconfirmed
GUEST, unregistred user!
功能设计:PC给下位机发送命令后下位机根据命令返回数据。
//发送字符
procedure TForm1.Button3Click(Sender: TObject);
var
pchar;
x:integer;
begin
x:=Length(Memo1.Lines.Text);//Memo1.Lines.Text是发送的内容
p:=Pchar(Memo1.Lines.Text);
Comm1.WriteCommData(p,x);
end;
//接受字符
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
pStrchar;
begin
pStr:= Buffer;
memo2.Lines.Add(pStr);
end;
我这样写可以正常收发信息,但是返回的数据:
根据通讯协议我从PC下发命令:O2O0x0d
下位机返回信息应该为:U200801FD0C6
可是却返回:%倐聜?罜6
慧_200801FD0C6
颻200801FD0C6
颻200801FD0C6
颻200801FD0C6
?200801FD0C6
问题1:他总是头一位出错,这是为什么?一般是什么原因呢?
问题2:另外我把发送代码改为如下:
var
pchar;
x:integer;
str:string;
begin
str:=Memo1.Lines.Text;//Memo1.Lines.Text是发送的内容
x:=Length(str);
p:=Pchar(str);
Comm1.WriteCommData(p,x);
end;
这样修改是把Memo1.Lines.Text的内容赋给STRING类型的str,但这样就无法收到信息了。
这是为什么?
//发送字符
procedure TForm1.Button3Click(Sender: TObject);
var
pchar;
x:integer;
begin
x:=Length(Memo1.Lines.Text);//Memo1.Lines.Text是发送的内容
p:=Pchar(Memo1.Lines.Text);
Comm1.WriteCommData(p,x);
end;
//接受字符
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
pStrchar;
begin
pStr:= Buffer;
memo2.Lines.Add(pStr);
end;
我这样写可以正常收发信息,但是返回的数据:
根据通讯协议我从PC下发命令:O2O0x0d
下位机返回信息应该为:U200801FD0C6
可是却返回:%倐聜?罜6
慧_200801FD0C6
颻200801FD0C6
颻200801FD0C6
颻200801FD0C6
?200801FD0C6
问题1:他总是头一位出错,这是为什么?一般是什么原因呢?
问题2:另外我把发送代码改为如下:
var
pchar;
x:integer;
str:string;
begin
str:=Memo1.Lines.Text;//Memo1.Lines.Text是发送的内容
x:=Length(str);
p:=Pchar(str);
Comm1.WriteCommData(p,x);
end;
这样修改是把Memo1.Lines.Text的内容赋给STRING类型的str,但这样就无法收到信息了。
这是为什么?