我要发送的二进制数据:
00001010001100110000011000000010000000011101100100000111000000000000000100100110
我在发送按钮中是这样写的:
if not mscomm.portopen then
  mscomm.PortOpen:=true;
  mscomm.output:=CHR($A)+CHR($33)+CHR($6)+CHR($2)+CHR($1)+CHR($D90)+CHR($7)+CHR($0)+CHR($1)+CHR($26)
//因为是测试,所以我是先手工每8位转为16进制,再发送(最后16位是校验和,前一字为高位,后一字节为低位)这样是不是正确,因为我发送后的东西调制器解调结果不正确,我想是不是哪里错了,如果谁在这方面是高手,希望可以留下联系方式,我的qq是17454938,email:[email protected])

解决方案 »

  1.   

    output是OLEVariant你先定义好变量然后转换以后再来发应该就可以了~
      

  2.   

    mscomm:微软的东西,ActivX控件,使用简单,在VB中带的,性能一般,由于是ActivX控件,打包时需要注册好多信息,不推荐使用。
    spcomm:比较好的vcl,算是比较专业的,解剖了一下,功能比较完善。
    TurboPower:公认的专业通讯控件。可以到其站点下载,开放源码了。
    我在制作串口通讯软件时三种都用过,最终全部使用TurboPower!所以也推荐大家使用它。
    写了个例子,基本的串口通讯都可以实现,可提供参考。
    下载地址:http://www.kaer.cn/default.aspx(网站安全性较差,经常当机,如果急用,mail我)
    多多指正:[email protected]
      

  3.   

    你是和MODEM通讯还是与MODEM对方的设备通讯?
      

  4.   

    同意  ksaiy(丹丹的木头) 的给你一段代码:
    var
      vTmp:variant;
      CodeSize:Integer;
      Code:Byte;
    begin
      StatusBar1.Panels[1].Text:='';
      CodeSize:=MsCommCall.InBufferCount;
      if CodeSize>0 then begin
        vTmp:=VarArrayCreate([0,CodeSize-1],varByte);
        vTmp:=MsCommCall.Input;
        Code:=vTmp[CodeSize-1];
      end
      else begin
        Code:=C_None;
      end;
      AThreadCall.SetBackCode(Code);
    ....