用vb如何通过modem读取电话机数字键发出的DTMF信号
编号:QA002063
建立日期: 1999年11月21日 最后修改日期:2003年11月1日
所属类别:
Q
zcl:
操作系统: win98
编程工具: vb
问题: 用vb如何通过modem读取电话线上的电话机数字键发出的DTMF信号?以实现BITWARE中用电话机对语音信箱的操作。
A回答:
VB中有TERMINAL CONTROL 的控件(主持人注:即MSCOMM32),可以对串行口进行读写,而计算机相对于MODEM,正好是一个DTE与DCE的关系,关于这种关系的细节可以去参考RS232的通信原理,标准MODEM中大概有30个接口寄存器,你对MODEM卡是无法直接访问这些寄存器的,只有通过AT命令,由MODEM来完成一些特定的功能。关于DTMF检测(也就是对方电话号码的检测),则该MODEM芯片必须具有CALLER ID的功能,至于AT命令中是否有检测CALLER ID 功能的命令,需要你去查阅相关的最新资料,因为以前的AT命令不包括这个功能,计算机对MODEM的唯一访问方式就是AT命令。(主持人建议:一般在Modem的手册上会有AT指令集)。
主持人注:目前的Modem一般都不具备检测DTMF功能,所以一般需要另外购买硬件(如电话语音卡)。
贺斌的意见:
可以采用AT#CID=1,如果显示OK,则可以接收来电号码了。
zhangpk的意见:
对于你的MODEM是否有CALLER ID功能,可以通过访问注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\Class\Modem\0000\EnableCallerId键,看其中是否有AT指令字符,其中1的值就是CALLER ID的AT指令。
李俊文的意见:
不用另外加硬件也可以接收DTMF信号,要用语音AT命令而且MODEM必需是语音FAXMODEM,接收的字符里含有其他字符,但是有规律的可以捕捉按键号码。如果感兴趣请跟我联系(lijw001@public.yj.jl.cn)。
此问题由chen_tu回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 网络与通信, network, communicate, com, com1, com2。
| |
|
|
| |
|
|