MSComm实现80H~0FFH之间的数据的串口发送、接收?(100分)

  • 主题发起人 atention
  • 开始时间
A

atention

Unregistered / Unconfirmed
GUEST, unregistred user!
我在使用Visual Basic5.0中文版中所带的ActiveX控件MSComm在Delphi3.0中编写
串口通信应用程序时遇到如下问题:
ActiveX控件MSComm的帮助文件中注明MSComm.Output属性支持文本数据和二进制
数据两种格式,但我尝试着发送非ASCII码可见字符如80H~0FFH之间的数据时,均告
失败。
请教诸位学友:如何在Delphi3.0中应用VB5.0中所带的ActiveX控件MSComm实现
80H~0FFH之间的数据的串口发送、接收?
注:本人曾尝试的Delphi3.0程序(只摘录部分主要代码)
一、var MyDAta : Byte;
MyData :=$80H;//(80H~0FFH之间的任意数据)
MSComm1.Output :=MyData;
编译运行时显示“无效的属性值”值班值班错误。
二、var MyData : Integer;
MyData :=129;//(129~255之间的任意数据)
MSComm1.Output :=MyData;
编译运行时用ST软件接收到的均为0.
 
二进制数据发送的时候,最好编码以后按文本发送.
base64是一种相当好的编码方案.涉及的编码和解
码算法尽管相当简单,但是编码的数据却只比UUENCODE
编码数据大33%左右。
 
这又是unicode的问题,试一试发关前先用strtovaraint函数
 
1
M$Comm的OCX构件,发送和接收都以字符(串)的方式进行,
2
设成文本方式, 如果发送$80,则需要转成相应的ascii字符 chr($80)发送
3
建议使用构件SPCOMM,Mscomm太烂!!!Spcomm本论坛有。
 

我就是用spcomm发送的字符串,串中包括$80H--$FFH之间的字符,
发送和接收都正常。
用#加相应的10进制数表示的字符,组成所发的串,如
var t:string;
t1:pchar;
begin
t:=#180+#220+'ABCD'+#200;
t1:=pchar(t);
Comm1.WriteCommData(t1,len(t1));
end;
但是这些字符在windows下无法按ASCII码表中的字符显示,我就不明白了。
 
很简单,只要将发送与接收的变量设为可变数组BYTE型,INPUTMOD设为二进制型
就可以收发没问题了!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部