delphi用mscomm做串口通讯 接收到数据是乱码 怎么办啊?

来源:百度知道 编辑:UC知道 时间:2024/06/05 23:51:21
发送类型是2进制的 如果用文本发送正常 但是用2进制 怎样才能接收到不是乱码的数据?

memo1.Text:=memo1.Text+mscomm1.input;
怎么改? 谢谢
3楼 你的程序只能接收到数据的一部分 为什么啊?
3楼 程序的接受端部分 谁能改下啊 谢谢

我想要 能把接收到的字符串数据改为16进制数据的程序 改得好的话追加50分

出现乱码可能
1 上位机下位机参数设置不一致 波特率 校验==
2 mscomm控件属性 设置 具体看下

设置一下控件属性

7)InputMode属性
void SetInputMode(long nNewValue); long GetInputMode();
访属性用于设置或者返回传输数据的类型。其取值和基本含义如下表所示。
设定值 值 描述
ComInputModeText(缺省) 0 通过Input属性以文本方式取回数据
ComInputModeBinary 1 通过Input属性以二进制方式取回数据

当发送类型是二进制时,应将以字节型数据放入Variant型变量中。
发送端:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,size: integer;
send_Command87:variant;
//fStream: TFileStream;
begin
size:=100;
send_Command87:= VarArrayCreate([1,size], varByte);
for i := 0 to size-1 do
begin
send_Command87[i]:=$ED//这里输入所要传输的数据
end;
mscomm.Output:=send_Command87;
end;

接收端:

var
buffer: Olevariant;//MSComm1.InputMode = comInputModeBinary

i: integer;
begin
case MSComm1.CommEvent of
comEvReceive: //串行接收事件处理
begin
buffer :=