当前位置:首页 » 电脑基础知识

AT命令简介

2007-03-20 17:22 本站整理 浏览(117)
好久以来就想研究AT命令了,但是一直苦于没有时间,2个月以前对于AT命令还是非常陌生的,许多人以为我对它应该很了解,其实不是的,我只是懂点TAPI而已。前一段时间一直在钻传真,了解了一些AT命令,突然对它发生了兴趣。这些天熬了几夜,看了不少e文书,终于有了一些进展,另一个VoiceAngel的妹妹faxCharmer(一个用at命令编写的语音传真控件)也正在制作之中,相信不久就可以和大家见面了。一直以来,我都非常感谢网上的无私奉献的朋友们无偿提供了许多有用的信息,所以这点东西,我不敢独享,拿出来和大家共同分享。 写于2002-12 AT命令是计算机发送给猫的命令。计算机给猫发出一个命令,猫返回一个字符串,表示命令执行的结果。如果猫能够接受,就给一个回应信息,通常都是ASCII字符OK,有时也会是其他的,比如给猫发送"ATD电话号码/r"之后,等到拨号完毕,猫会返回CONNECT.如果猫不能够接受就给一个错误信息,一般都是ERROR。计算机和猫之间的对话都是靠着原始的字符串来完成的。计算机发给猫的都是命令。而猫发给计算机的字符串有三类,其一:对于命令的回应,一般在命令接收到后马上就回应了。其二:消息字符。猫不但听话,而且很爱打报告,一般风吹草动,就要给电脑通风报信。比如每次有震铃时,就先一个字符DLE(DLE不是三个字符,而是一个字符的代号,这个字符的16进制表示为0x10),后面跟一个'R'.有来电显示的时候发一个字符0x0d,紧跟着是0x0a,接着就是来电显示日期和号码。监测到话机按键的时候,发一个DLE,后面跟着'/',按键,'~'.其三:录音的时候把录制的数据发送给电脑。发送数据的时候,如果遇到某一个字节的数据刚好是DLE,就在它的后面补一个DLE,电脑在接收的时候,如果发现两个连续的DLE就去掉一个,留下一个,如果发现单独的DLE可能就是消息字符。 猫可以工作在数据模式、语音模式或传真模式下,相应的AT命令分为常规命令,语音命令,传真命令。常规命令就是一些各种模式下通用的命令,比如拨号(atd电话号码/r)应答(ata/r),还有初始化命令等等。相应的at命令请参考http://www.gkong.com/MODEM/index_modem.htm,更详细的还有一个e文的,太长了,没有时间翻译 voicecommandguide ,里面介绍都挺详细的,不过你的猫的AT命令可能会略有不同。 不同的猫可能会有不同的at命令。在windows系统中,每个猫的驱动程序的inf文件里都可以找到一些at命令,比如,下面是从金网霸fm3711猫的xp下的驱动程序中摘录的一段。可以看出,这是在告诉windows执行各种操作时对应的at命令。比如初始化猫的时候就要执行"AT&FE0V1S0=0&C1&D2+MR=2;+DR=1;+ER=1;W2<cr>" 下面是金网霸语音猫的驱动程序文件(.inf)的一部分,在安装驱动之后,这些信息就被写到注册表里面了. HKR, Init, 1,, "AT<cr>" HKR, Init, 2,, "AT&FE0V1S0=0&C1&D2+MR=2;+DR=1;+ER=1;W2<cr>" HKR, Monitor, 1,, "ATS0=0<cr>" HKR, Monitor, 2,, "None" HKR, Hangup, 1,, "ATH<cr>" HKR, Answer, 1,, "ATA<cr>" HKR, , Reset,, "ATZ<cr>" 。。。。。 HKR, StartPlay, 1,, "at+vtx<cr>" HKR, StopPlay, 1,, "None" HKR, StopPlay, 2,, "NoResponse" HKR, StartRecord, 1,, "at+vrx<cr>" HKR, StopRecord, 1,, "None" HKR, StopRecord, 2,, "NoResponse" HKR,, TerminateRecord,, "<h10><h21>" HKR,, TerminatePlay,, "<h10><h03>" HKR,, AbortPlay,, "<h10><h03>" HKR, LineSetPlayFormat, 1,, "at+vsm=130,8000,0,0<cr>" HKR, LineSetRecordFormat, 1,, "at+vsm=130,8000,0,0<cr>" HKR, VoiceToDataAnswer, 1,, "at+fclass=0<cr>" HKR, VoiceToDataAnswer, 2,, "ata<cr>" 下面是应答的时候要执行的命令。注意,在语音模式下,at+vls=1<cr>"就可以应答了,不需要ata HKR, VoiceAnswer, 1,, "at+fclass=8<cr>" HKR, VoiceAnswer, 2,, "at+vtd=10<cr>" HKR, VoiceAnswer, 3,, "at+vsm=130,8000,0,0<cr>" 设置语音数据压缩格式。 HKR, VoiceAnswer, 4,, "at+vit=6<cr>" HKR, VoiceAnswer, 5,, "at+vls=1<cr>" HKR, VoiceDialNumberSetup, 1,, "at+fclass=8<cr>" HKR, VoiceDialNumberSetup, 2,, "at+vls=0<cr>" HKR, VoiceDialNumberSetup, 3,, "at+vrn=0<cr>" HKR, VoiceDialNumberSetup, 4,, "at+vtd=10<cr>" HKR, VoiceDialNumberSetup, 5,, "at+vsm=130,8000,0,0<cr>" HKR, VoiceDialNumberSetup, 6,, "at+vit=6<cr>" 下面是猫发送给电脑的响应字符串。 HKR, Responses, "0<cr>", 1, 00, 00, 00,00,00,00, 00,00,00,00 ; OK HKR, Responses, "1<cr>", 1, 02, 00, 00,00,00,00, 00,00,00,00 ; CONNECT HKR, Responses, "2<cr>", 1, 08, 00, 00,00,00,00, 00,00,00,00 ; RING HKR, Responses, "3<cr>", 1, 04, 00, 00,00,00,00, 00,00,00,00 ; NO CARRIER HKR, Responses, "4<cr>", 1, 03, 00, 00,00,00,00, 00,00,00,00 ; ERROR HKR, Responses, "5<cr>", 1, 02, 00, B0,04,00,00, 00,00,00,00 ; CONNECT 1200 HKR, Responses, "6<cr>", 1, 05, 00, 00,00,00,00, 00,00,00,00 ; NO DIALTONE HKR, Responses, "7<cr>", 1, 06, 00, 00,00,00,00, 00,00,00,00 ; BUSY HKR, Responses, "8<cr>", 1, 07, 00, 00,00,00,00, 00,00,00,00 ; NO ANSWER 关于详细的驱动信息,请看完整的inf文件 在驱动程序安装以后,这些信息就被装到注册表里去了。不同的操作系统,注册表的结构也有所不同。在win9x中,在LOCAL_MACHINE/system/CurrentControlSet/services/class/modem下,每一个猫对应一个子目录,比如第一个猫是0000目录,第二个是0001.打开目录,可以看到许多子目录和数据项,每个子目录对应着一个动作,比如拨号,应答等,目录里面则是具体的AT命令。数据项中描述了猫的一些属性,比如Model项就是猫的驱动描述,matchingDeviceID对应的是PCI/xxxx,在LOCAL_MACHINE/system/CurrentControlSet/services/enum下可以找到这个项,在里面可以找到和串口有关的信息,比如猫对应的串口号等。 在xp中,LOCAL_MACHINE/system/CurrentControlSet/services/modem下可以找到0,1...项代表各路猫。打开其中的一项,其值是PCI/XXXX的格式。在LOCAL_MACHINE/system/ControlSet001/enum/中可以找到与该值相应的项。打开它的子项,其中有一项是Driver,在LOCAL_MACHINE/system/ControlSet001/control/class中可以找到项名为Deriver的值的项,该项下面有许多项,比如Answer,VoiceAnswer,StartPlay,StartRecord,EnableCallerID,Hangup等等,打开其中的一项,可以发现里面的内容是猫执行某项操作的时候需要用到的AT命令。比如Rockwell芯片的猫的EnableCallerID里面的内容通常是 Name Type Data (Default) REG_SZ (&#118alue not set) 1 REG_SZ at+vcid=1<cr> 有时候猫的驱动程序安装不正确,里面就有可能缺少某些项,比如金网霸PF-X01(芯片Conexant 11242)在98下安装后就没有 EnableCallerID 项,这样在TAPI模式下,猫就没有来电显示功能了。要想解决这个问题,可以手工把这一项添加到注册表里面。 在winxp下,系统会自动给猫安装驱动程序,删除了系统自动安装的驱动程序之后,扫描硬件改动,系统仍然会自动安装系统自带的驱动程序。要想使用厂家提供的驱动程序,在设备管理里面找到猫,然后双击,找到驱动程序页面,点更新驱动程序,出现更新驱动向导,有两个选项,第一个是自动安装,第二个是从列表或特定的位置安装,选择第二个,点下一步,又出现两个选项,第一个是从下列位置中选择搜索驱动程序,第二个是不搜索,直接选择驱动程序。选择第二个,点下一步,再点从磁盘安装,找到驱动程序存放的位置,就可以了