我刚刚网上看了一个用MSComm做的一个Modem拨号的组件,但是它发信号是MSComm1.Output:='ATH0*88'的形式,即是用字符串的,但是我现在已经在用的控件是tmsa32(TMS Async32)控件,
这个我都是用
var
senddata:array[0..7] of byte;    senddata[0]:=$d1;
    senddata[1]:=$04;
    senddata[2]:=$00;
    senddata[3]:=$00;
    senddata[4]:=$00;
    senddata[5]:=$0b;
    crc:=crccal.crc16(senddata,6);   //校验
    senddata[6]:=crc div $100;
    senddata[7]:=crc mod $100;
    vabuffer1.Clear;
    vacomm1.WriteBuf(senddata,8);   //发送这样的话我怎么把ATH这些字母改成byte放上去发啊?还是这个组件有其它方法来发送的?

解决方案 »

  1.   

    var
      S: string;
    begin
      S := 'ATH0*88';
      vacomm1.WriteBuf(S[1],Length(S));
    end;
      

  2.   

    TO DDGG(叮叮当当)
    没有出错,但是拨号没反映
      

  3.   

    我接收是
    data:array[0..10] of byte;vabuffer1.Read(data,接收个数);
    如果按拨号来我不知道怎么接收,因为他反回的数不一样的
      

  4.   

    让Modem拨号的AT指令不是“AT”+号码吗?我记得好像是这样的。
    比如要拨8888就在超级终端里输入AT8888回车
    上面的程序应该就是把S := 'ATH0*88'; 改成 S := 'AT8888'#13#10;
      

  5.   

    建议使用TurboPower Async Professional系列控件,里面都有现成的例子了
      

  6.   

    现在把字符转换成16进制是可以发了,发出去后和MSCOMM返回的字符是一样的,都是返回ATDT*88,但是用MSCOMM发却能拨通,用TMS Async32却不行,
    字符的和16进制两种形式都是MSCOMM发能拨通,用TMS Async32却不行
      

  7.   

    //AT指令自动连线
      tmpstr:='ATS0=1'+chr(10)+chr(13);
      vabuffer1.Clear;
      vacomm1.WriteBuf(tmpstr[1],Length(tmpstr));
    这个是返回OK但是我自已拨号
        tmpstr:='ATDT*88'+chr(10)+chr(13);
        vabuffer1.Clear;
        vacomm1.WriteBuf(tmpstr[1],Length(tmpstr));
    不行,返回ERROR,在MSCOMM里这样是可以的
      

  8.   

    哦,我记错了,拨号应该是ATDT+号码,但当中加个*是什么意思呢,应该不要它吧。