MSCOMM完美发送接收string类型
来源:互联网 发布:鬼怪服装知乎 编辑:程序博客网 时间:2024/06/09 17:34
今天在用MSCOMM发数据的时候,碰到点问题,MSCOMM的OutPut属性是OLEVariant类型
在发送string类型的时候,会自动将string强制转换成widestring类型,当发送含有ascii码大于127的字符串的时候,就会造成丢失字节问题,解决方法如下:
发送:
procedure SendMessage(AMessage: String);
var
len,I : integer;
temp:Variant;
begin
len:=length(AMessage);
temp := VarArrayCreate([0, len-1], varbyte);
for I := 0 to len-1 do // Iterate
begin
temp[i] := ord(char(AMessage[i+1]));
end; // for
MSComm1.Output := temp;
end;
注意在VarArrayCreate的帮助中有这样一句话
Variant arrays with an element type of varByte are the preferred method of passing binary data between OLE Automation controllers and servers.
接收:
接收就简单多了
procedure ReceiveData(Sender: TObject);
var
temp: array of byte;
S:string;
begin
case FComm.commEvent of
comEvReceive:
begin
temp := MScomm1.input;
s:=string(temp); //S里面放的就是最后结果
end;
end;
end;
- MSCOMM完美发送接收string类型
- Mscomm接收数据问题
- MSCOMM的完美注册
- MSComm串行通讯控件----2进制发送、接收数据(网上转载)
- VFP mscomm控件会发生接收到的数据比发送的数据多
- 利用MSComm控件实现字符发送与接收(串口)的工程设置问题
- MSCOMM通信控件接收数据
- 微信公共平台开发接收与发送信息类型
- 微信公共平台开发接收与发送信息类型
- 微信发送接收消息类型的整理
- 串口通讯中接收和发送float类型数据
- MSCOMM发送UTF8乱码问题解决方法
- MSComm
- MSComm
- MSCOMM
- mscomm
- MSComm
- mscomm
- String 与wideString 的完美转换
- Java开发者必去的技术网站
- 有足迹了
- Eclipse及其插件下载网址大全
- OLAP
- MSCOMM完美发送接收string类型
- acegi reference 1.3节
- TCP/UDP Handle List [Zz]
- acegi ref 1.4~1.5
- [转载]给初学编程者的忠告
- log4j配置详解
- 存储结果
- test
- 老婆日记[爆笑]