AT+VCID=1 未在 USR 调制解调器上启用来电显示

AT+VCID=1 未在 USR 调制解调器上启用来电显示

我正在测试USR 5637 USB 调制解调器。 根据 USR 文档我可以使用以下方式查询调制解调器对来电显示的支持AT+VCID

Debug: modem_write
Debug: Write 10: "AT+VCID=?\r"
Debug: modem_read
Debug: Read 24: "AT+VCID=?
(0-16)
OK"

0-16是不寻常的,因为 手册指出值是0, 1, 2。然后我继续设置为1,这按照手册 Enables formatted Caller ID

Debug: modem_write
Debug: Write 10: "AT+VCID=1\r"
Debug: modem_read
Debug: Read 14: "AT+VCID=1
OK"

稍后,当有电话打来时,USR 调制解调器不会显示来电显示信息。来电显示信息应在第 1 和第 2 声铃声之间显示。

相同的代码在基于 Conextant 93001 的调制解调器上也能很好地运行,所以我相当确定代码是正确的。(或者说基本正常,没有明显的缺陷)。

看起来其他人也遇到过类似的问题(例如,来电显示检测 -> US Robotics 56K?使用不同的产品),但我没有看到解决方案。

为什么 USR 调制解调器不显示来电显示信息?


这是我使用的启动顺序。它似乎遵循了美国机器人手册。

init:
while (ATZ != OK)
  goto init

# gather modem info
ATI0
ATI1
ATI2
ATI3
ATI4

# query fax class
AT+FCLASS=?

# query compression
AT+VSM=?

# set caller id
AT+VCID=1

loop:
    # process data
    read_modem
    ...

    goto loop

以下是 formatted Caller ID看起来像是在 Conexant 调制解调器上。在 Conexant 调制解调器上,这出现在环 1 和环 2 之间:

Debug: modem_read
Debug: Read 59: "DATE = 0302
TIME = 1601
NMBR = 6045551212
NAME = JOHN DOE"

这是 Windows 使用的初始化字符串。它取自USR5637Voice64bit.exe 驱动程序下载并usr5637_rv.inf文件:

AT
AT&F1E0Q0V1&C1&D2S0=0

当我测试它时,初始化字符串也没有启用呼叫者 ID。

答案1

虽然花了点时间,但答案如下。必须设置以下三个选项才能从 USR5367 调制解调器获取来电显示信息:

init:
while (ATZ != OK)
  goto init

# set fax class
AT+FCLASS=8

# disable call waiting
AT+PCW=0

# set caller id
AT+VCID=1

loop:
    # process data
    read_modem
    ...

    goto loop

呼叫等待功能与 USR 调制解调器的调制解调器保持 (MoH) 功能以及调制解调器在通话期间切换线路的能力有关。不过,我不太明白呼叫等待与来电显示有什么关系。

相比之下,基于 Conexant CX93001 的调制解调器只需要AT+VCID=1。而 Conexant 要求AT+FCLASS=0;设置+FCLASS会导致呼叫者 ID 停止工作。+PCW似乎没有什么区别;并且 Conexant 可以使用AT+PCW=2


如果您需要在运行时检测 Conexant 与 USR 调制解调器,请使用ATI3。返回的调制解调器字符串为:

科胜讯:

Debug: modem_write
Debug: Write 7: "ATI3\r"
Debug: modem_read
Debug: Read 38: "ATI3
CX93001-EIS_V0.2013-V92

OK"

美国:

Debug: modem_write
Debug: Write 7: "ATI3\r"
Debug: modem_read
Debug: Read 48: "ATI3
U.S. Robotics 56K FAX USB V1.2.23

OK"

这可能对编程 USR5367 调制解调器的人有帮助...当 USR5367 的来电显示功能正常时,调制解调器会将与来电显示相关的消息传达给“数据链逃脱”(DLE)消息。DLE 消息用字符 0x10 表示。

RING通过 进行通信<DLE>+R,通过 进行呼叫者 ID 信息通信。因此,振铃信号由两个字节(后跟)<DLE>+X表示。呼叫者 ID 信息由两个字节(后跟)表示。呼叫者 ID 数据使用名称/值对跟在后面,例如和。完整的 CallerID 消息如下所示:0x10 0x52<CR><LF>0x10 0x58 0x10<CR><LF><DLE>+XNAME=PASADENA MD<CR><LF>NMBR=4104394421<CR><LF>

<DLE>+X<CR><LF>
NAME=PASADENA     MD<CR><LF>
NMBR=4104394421<CR><LF>
DATE=1106<CR><LF>
TIME=1425<CR><LF>

<CR><LF>在手册中被称为“尾部”,并用作行尾,由S3S4寄存器参数指示)。

相关内容