AT+VCID=1 is not enabling Caller Id on USR modem
I'm testing a USR 5637 USB modem. According to the USR docs I can query modem support for Caller Id with AT+VCID
:
Debug: modem_write
Debug: Write 10: "AT+VCID=?\r"
Debug: modem_read
Debug: Read 24: "AT+VCID=?
(0-16)
OK"
0-16
is unusual because the manual states the values are 0, 1, 2
, I then go on to set to 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 не предоставляет информацию об идентификаторе вызывающего абонента?
Вот последовательность запуска, которую я использую. Похоже, что они следуют руководству US Robotics.
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
Когда я проверял это, строка инициализации также не включала Caller Id.
0 ответов
Это заняло некоторое время, но вот и ответ. Следующие три параметра должны быть установлены для получения идентификатора вызывающего абонента от модема 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
Функция "Ожидание вызова" имеет отношение к функции "Модем при удержании" (MoH) модемов USR и способности модема переключать линии во время вызова. Я не совсем понимаю, что ожидание вызова связано с идентификатором вызывающего абонента, хотя.
В отличие от модемов на основе Conexant CX93001 только AT+VCID=1
, А конексант требуют AT+FCLASS=0
; установка +FCLASS
заставляет Caller ID перестать работать. +PCW
не имеет значения; и Conexant работает с AT+PCW=2
,
Если вам нужно обнаружить модемы Conexant vs USR во время выполнения, используйте ATI3
, Возвращаются строки модема:
Conexant:
Debug: modem_write
Debug: Write 7: "ATI3\r"
Debug: modem_read
Debug: Read 38: "ATI3
CX93001-EIS_V0.2013-V92
OK"
USR:
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 функционирует идентификатор вызывающего абонента, модем передает сообщения, относящиеся к идентификатору вызывающего абонента, с помощью сообщений "Data Link Escape" (DLE). Сообщения DLE сигнализируются символом 0x10.
RING
общается с <DLE>+R
и информация о звонящем с <DLE>+X
, Таким образом, кольцо сигнализируется двумя байтами 0x10 0x52
(с последующим <CR><LF>
). Информация об идентификаторе вызывающего абонента передается двумя байтами 0x10 0x58 0x10
(с последующим <CR><LF>
). Данные идентификатора вызывающего абонента следующие <DLE>+X
используя пары имя / значение, например NAME=PASADENA MD<CR><LF>
а также NMBR=4104394421<CR><LF>
, Полное сообщение CallerID будет выглядеть так:
<DLE>+X<CR><LF>
NAME=PASADENA MD<CR><LF>
NMBR=4104394421<CR><LF>
DATE=1106<CR><LF>
TIME=1425<CR><LF>
(А также <CR><LF>
в руководстве называется "трейлер" и используется как конец строки, как указано S3
а также S4
зарегистрировать параметры).