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

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

最佳答案

当发送含有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类型 》
http://blog.csdn.net/yuechuan/article/details/488085

提问者对于答案的评价:

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc223978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年3月6日 下午1:26
下一篇 2018年3月6日 下午1:26

相关推荐

  • WINCC SMART 700V3变量怎么保存?或者保存到PLC SMART200中?

    大家好!温度控制,在WINCC中设置温度上限和下限,有时候需要修改上下限的值,需要二次通电后最后一次修改的值还在变量上限和下限中。谢谢! 问题补充:WINCC SMART…

    SIMATIC WinCC 2020年11月1日
  • 怎么实现远程的视频监控,

    我想实现在电脑上可以监控千里之外的厂区运行情况,视频监控,就是看看他们运行的怎么样了,怎么才能实现呢? 钻石用户推荐最佳答案 WinCC 如何实现网络摄像头的视频显示ht…

    SIMATIC WinCC 2021年7月5日
  • wincc的用户管理

    想请教各位高手有没有wincc6.2的用户管理组态资料啊,我现在想用一个按钮来打开操作用户的登录窗口,请问该如何实现啊? 问题补充:我的意思是,比如我在用户管理里边设定两个操作员,…

    SIMATIC WinCC 2019年6月11日
  • WINCC组网问题

    已有一台WINCC上位机,通过MPI连接S7-300,想在500米外一个场所加多一台上位机,两台上位机显示同样内容,如何组网? 问题补充:首先感谢各位的指点。如果使用以太网与两台上…

    SIMATIC WinCC 2019年6月11日
  • 西门子MP277中怎么做动画

    西门子MP277中怎么做动画? 最佳答案 这个好办,以水流动画为例。  1,首先需要4张水流的静态图片(从第一张依次快速变化到第四张能够明显看到有水流的动画效果…

    SIMATIC WinCC 2019年6月11日
  • wincc 的组显示报警

    请问我这是用wincc6.2的os project editor生成的这种pcs7的框架,请问,我区域选择按钮旁边的红线方块内的这几个组显示报警怎么组态呢?谢谢…

    SIMATIC WinCC 2019年6月11日
  • wincc6.0 vbs 访问数据库

    现在要在oracle数据库上读取数据(8i),我用了一个Function返回相应的值,其中strSQL为数据库查询语句,i对应表的列,然后我在一个button中使用这个Functi…

    SIMATIC WinCC 2019年6月11日
  • wincc关于如何设置输入i/o域上下限

    我有两个输入i/o域,一个直径一个长度,每个直径对应的长度范围不一样,求助怎么设定这个上下限。是在wincc里还是plc里解决。 最佳答案 1、右键选中I/O域,弹出对话框选中“属…

    2021年7月5日
  • 在WINCC组态软件里如何实现报表功能?

    我是一名新手。业主有一个EXCEL格式制作的报表。现在要在wincc软件中实现。怎末办? 最佳答案 给你个简单的例子,去研究一下吧! FYI Dim …

    SIMATIC WinCC 2019年6月11日
  • wincc点击阀门实现阀门和管道同时变色

    请问wincc里设置了内部变量,考虑着点击阀门后,该变量置1,通过动态对话框与该变量连接,阀门和其连接的管道均变为绿色,但为何只是该阀门变成绿色,管道不变色呢 问题补充:第一种管道…

    SIMATIC WinCC 2017年11月18日