如何为调制解调器编写初始化字符串 曹继建 1997-01-01   初始化字符串是通过通信软件向调制解调器提供的一组具有功能设置的命令符集成,可使调制解调器在每次工作之前都处于一个理想的工作状态。正确的初始化字符串能够真实反映出操作人员的使用意图及调制解调器自身的工作能力,并使其尽善尽美地发挥作用。   我们知道,为数不少的通信软件都能支持很多品牌的调制解调器,并提供了丰富的初始化字符串。当选择了软件中某一种调制解调器品牌或型号时,与其对应的初始化字符串也就确定了。不过,不论是哪一种通信软件都不可能包罗所有型号的调制解调器初始化字符串,尤其是新品牌、新型号调制解调器的初始化字符串,在通信软件中是很难找到的。一般情况下,有些使用者在搜寻不到自己的调制解调器型号相对应的字符串时,常常会用一个与之兼容的Hayes初始化字符串取而代之,这不失为一个明智之举。但是必须清楚,选择兼容的初始化字符串虽然能使通信正常进行,却很少能发挥出调制解调器自身的应有功能和难以体现使用人员的操作要求。还有一些通信软件只有一个缺省的初始化字符串供使用,QuickLink II就属于这一类的通信软件,它提供的唯一一条初始化字符串是AT&FE1L1V1&D2S0=0S7=90。因此用户在遇到这种情况时,最好的办法就是编写一条适合自己调制解调器使用的初始化字符串,然后把它填写到通信软件的指定位置上,并存到系统中。   怎样编写一条恰当的初始化字符串呢?我们首先应该遵循这样一个原则,即以调制解调器使用说明书中提供的技术参数、AT命令集及寄存器资料为主要依据,结合通信网络的状况和自己的实际需要,将所选的功能开列一份清单,然后用AT命令集中对应的命令符逐一代替。一个字符串可包含多个命令字符,但必须是AT命令集中提供的命令符,因为调制解调器的品牌与型号不同,结构、性能均不一样,因此所用的AT命令也各有取舍,这也是调制解调器为什么都有自己专用初始化字符串的主要原因所在。   初始化字符串必须以AT开头,后缀命令符可长可短,但最长不得超过40个字符,字符串中选择的命令符一定要准确、完整,忽略或用错一个命令符就可能导致调制解调器的某些功能失常。字符串编好后必须经试验通过才能正式使用,如果系统进入待机状态时出现了错误显示,很可能就是字符串编写得不正确。下面,我们以V.32调制解调器为例,编写一条与它相适应的初始化字符串。   首先,将调制解调器的各种参数恢复到出厂时的设定值,使用命令符为&F。这是因为出厂时设定的参数值是大多数调制解调器普遍使用的参数,有很好的兼容性。因而不少调制解调器的生产厂家把AT&F作为自己的品牌机的初始化字符串。如果使用者不了解所用的调制解器参数或不愿费时编写一条长的初始化字符串时,使用AT&F也是一个不错的主意。   接下来选择CD(载波检测)与DTR(数据终端准备就绪)的信号检测控制命令符。CD的命令符是&Cn,n=0时检测无效,n=1时检测有效,通常情况下需选择n=1(即&C1)使调制解调器处于载波的检测状态。DTR的检测命令符是&Dn,n=0不作任何检测;n=1,DTR在OFF时调制解调器转到指令状态;n=2,DTR在OFF时调制解调器转到自动拆线状态;n=3,DTR在OFF时调制解调器进入复位状态。其中n=2恰好符合拨号用户使用,可将其添加在命令符&D之后,即&D2。若将上面选好的CD与DTR的控制命令符串成一组,就成了&C1&D2,这两个命令符几乎可满足所有的调制解调器在拨号方式下完成对CD和DTR信号的检测需要。   如果所使用的调制解调器符合V.32协议标准,那么这个调制解调器的内部一定有一个V.42纠错功能和一个V.42bis的数据压缩功能,启动这个功能的命令符是\N3。我们知道V.42bis是一种硬件数据压缩模式,因此必须有硬件流量控制方可防止数据在传输过程的遗失。流量控制的命令符是\Qn,n=0时流量控制无效,n=1时激活XON/XOFF软件流量控制,n=2时激活RTS/CTS(请求发送/清除发送)硬件流量控制,n=3时只激活CTS(清除发送)硬件流量控制。从硬件压缩的使用经验看,选择n=3是最理想的。可见,我们从AT命令集中选择可靠数据传输命令符\N3再加上\Q3就可组成即满足于硬件纠错又满足于数据压缩,还兼有硬件流量控制的字符串———AT\N3\Q3。如果你的调制解调器不识别这个字符串,还可另设为AT&K3&H1或ATS46=2&K3。   此外,每个调制解调器的初始化字符串中还应增加一些实用的参数设定,如寄存器的设定。从说明书中可以得知,S7是一个在拨号后等待载波信号的时间控制寄存器,调整范围是0~255秒,不少型号的调制解调器默认等待时间为30秒。30秒的等待时间对一般近距离、质量好的通信线路是够用的,然而目前的通信环境并不完善,各种不良因素常常导致线路接续时间延长。所以,经常处于远距离通信或是在线路状态欠佳时通信的调制解调器,应该把S7的等待时间设为60秒(S7=60)或再长一些。   其它如自动应答铃响次数、扬声器监听状态参数的设定,读者可参照说明书进行。   上面简单介绍了初始化字符串的编写过程,如果把这一过程中每一步所选择的命令符按顺序排列起来,即成为一条比较完善、实用的初始化字符串:AT&F&C1&D2\N3\Q3S7=60。这条字符串完全能够满足V.32调制解调器的拨号联机需要。当然,如