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

发送类型是2进制的如果用文本发送正常但是用2进制怎样才能接收到不是乱码的数据?memo1.Text:=memo1.Text+mscomm1.input;怎么改?谢谢3楼你... 发送类型是2进制的 如果用文本发送正常 但是用2进制 怎样才能接收到不是乱码的数据?

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

我想要 能把接收到的字符串数据改为16进制数据的程序 改得好的话追加50分
展开
 我来答
T_N_TT
推荐于2016-07-12
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
当发送类型是二进制时,应将以字节型数据放入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都行。
呵呵,没时间了写得很乱,吃饭去也。
帆布鞋公主511
2009-07-21 · TA获得超过193个赞
知道答主
回答量:266
采纳率:0%
帮助的人:0
展开全部
出现乱码可能
1 上位机下位机参数设置不一致 波特率 校验==
2 mscomm控件属性 设置 具体看下

设置一下控件属性

7)InputMode属性
void SetInputMode(long nNewValue); long GetInputMode();
访属性用于设置或者返回传输数据的类型。其取值和基本含义如下表所示。
设定值 值 描述
ComInputModeText(缺省) 0 通过Input属性以文本方式取回数据
ComInputModeBinary 1 通过Input属性以二进制方式取回数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萍水e相逢
2009-07-21 · TA获得超过3万个赞
知道大有可为答主
回答量:5.9万
采纳率:46%
帮助的人:1.4亿
展开全部
应该 用 2进制 方式接受

然后 在 转换!

祝你顺利
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式