当前位置: 主页 > PLC控制

用vbs怎么提取mscomm接收到的大于127的ascii码?

mscomm接收到一帧数据为ed3031320d,VBS提供的字符串函数不能处理大于127的AScii码,那么用什么方法能检测到大于127的起始符“ed”呢?

最佳答案

当发送含有ascii码大于127的字符串的时候,就会造成丢失字节问题,解决方法如下:

发送:

proCEdureSendMessage(AMessage:STring);
var
len,I:integer;
temp:Variant;
begin
len:=length(AMessage);
temp:=VarArrayCreate([0,len-1],varbyte);
forI:=0tolen-1do//Iterate
begin
temp[i]:=ord(char(AMessage[i+1]));
end;//for
MSComm1.OuTPut:=temp;
end;

注意在VarArrayCreate的帮助中有这样一句话

VariantarrayswithanelementtypeofvarBytearethepreferredmethodofpassingbinarydatabetweenOLEAutomationcontrollersandservers.

接收:

接收就简单多了

procedureReceiveData(Sender:TObject);
var
temp:arrayofbyte;
S:string;
begin
caseFComm.commEventof
comEvReceive:
begin
temp:=MScomm1.input;
s:=string(temp);//S里面放的就是最后结果
end;
end;
end;

可参考:《MSCOMM完美发送接收string类型》
http://blog.csdn.net/yuechuan/aRTicle/details/488085

提问者对于答案的评价:

  • 关注微信

猜你喜欢

微信公众号