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 зарегистрировать параметры).