delphi用mscomm做串口通讯 接收到数据是乱码 怎么办啊?
发送类型是2进制的如果用文本发送正常但是用2进制怎样才能接收到不是乱码的数据?memo1.Text:=memo1.Text+mscomm1.input;怎么改?谢谢3楼你...
发送类型是2进制的 如果用文本发送正常 但是用2进制 怎样才能接收到不是乱码的数据?
memo1.Text:=memo1.Text+mscomm1.input;
怎么改? 谢谢
3楼 你的程序只能接收到数据的一部分 为什么啊?
3楼 程序的接受端部分 谁能改下啊 谢谢
我想要 能把接收到的字符串数据改为16进制数据的程序 改得好的话追加50分 展开
memo1.Text:=memo1.Text+mscomm1.input;
怎么改? 谢谢
3楼 你的程序只能接收到数据的一部分 为什么啊?
3楼 程序的接受端部分 谁能改下啊 谢谢
我想要 能把接收到的字符串数据改为16进制数据的程序 改得好的话追加50分 展开
3个回答
展开全部
当发送类型是二进制时,应将以字节型数据放入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 := MSComm1.Input;//读出后会自动清除接收缓冲区
for i := 0 to MSComm1.RThreshold - 1 do //32字节Hex转换
begin
Edit3.Text := Edit3.Text + inttohex(buffer[i], 2) + ' ';
end;
Memo1.Lines.Add(Edit3.Text);//加入一行显示
end;
end;
发送端数据读入你可以自己想方法 只要是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 := MSComm1.Input;//读出后会自动清除接收缓冲区
for i := 0 to MSComm1.RThreshold - 1 do //32字节Hex转换
begin
Edit3.Text := Edit3.Text + inttohex(buffer[i], 2) + ' ';
end;
Memo1.Lines.Add(Edit3.Text);//加入一行显示
end;
end;
发送端数据读入你可以自己想方法 只要是Variant都行。
呵呵,没时间了写得很乱,吃饭去也。
展开全部
出现乱码可能
1 上位机下位机参数设置不一致 波特率 校验==
2 mscomm控件属性 设置 具体看下
设置一下控件属性
7)InputMode属性
void SetInputMode(long nNewValue); long GetInputMode();
访属性用于设置或者返回传输数据的类型。其取值和基本含义如下表所示。
设定值 值 描述
ComInputModeText(缺省) 0 通过Input属性以文本方式取回数据
ComInputModeBinary 1 通过Input属性以二进制方式取回数据
1 上位机下位机参数设置不一致 波特率 校验==
2 mscomm控件属性 设置 具体看下
设置一下控件属性
7)InputMode属性
void SetInputMode(long nNewValue); long GetInputMode();
访属性用于设置或者返回传输数据的类型。其取值和基本含义如下表所示。
设定值 值 描述
ComInputModeText(缺省) 0 通过Input属性以文本方式取回数据
ComInputModeBinary 1 通过Input属性以二进制方式取回数据
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该 用 2进制 方式接受
然后 在 转换!
祝你顺利
然后 在 转换!
祝你顺利
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询