我刚刚网上看了一个用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放上去发啊?还是这个组件有其它方法来发送的?
这个我都是用
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放上去发啊?还是这个组件有其它方法来发送的?
S: string;
begin
S := 'ATH0*88';
vacomm1.WriteBuf(S[1],Length(S));
end;
没有出错,但是拨号没反映
data:array[0..10] of byte;vabuffer1.Read(data,接收个数);
如果按拨号来我不知道怎么接收,因为他反回的数不一样的
比如要拨8888就在超级终端里输入AT8888回车
上面的程序应该就是把S := 'ATH0*88'; 改成 S := 'AT8888'#13#10;
字符的和16进制两种形式都是MSCOMM发能拨通,用TMS Async32却不行
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里这样是可以的