Связь с модемом GSM с помощью AT-команды

Я пытаюсь связаться с модемом GSM через последовательный порт в С#.

Пока мне удалось подключиться к нему, отправить ему команду AT и отправить SMS.

для отправки SMS я отправляю следующую AT-команду

AT+CMGF=1 /* set text mode */

AT+CMGS=8801911xxxxxx 

"hellp msg "+ (char)26

его работа, как ожидалось.

Но для отправки USSD-сообщения,

Я пытаюсь

AT+CMGF=0 /* PDU mode */
AT+CUSD=1,*121# , 15

Но ответа нет.

Я пробовал с библиотекой GSMCOMM, она тоже не отвечает.

Я попытался преобразовать текст в PDU, но безуспешно.

Итак, как я могу отправить сообщение USSD на С# через последовательный порт на модем и получить ответ?


person Shofiqul Alam    schedule 10.08.2017    source источник


Ответы (2)


Вы должны отправить USSD-команду следующим образом:

AT+CUSD=1,"*121#",15

Также обратите внимание, что AT+CMGF влияет только на отправку SMS, а не на USSD.

Вы также можете проверить этот ответ.

person vasek    schedule 10.08.2017
comment
на самом деле я отправлял именно это, но все равно не повезло. Вот как я отправляю и получаю: _serialPort.WriteLine(AT+CUSD=1,\*121#\,15); Результат Thread.Sleep(1000) = _serialPort.ReadLine(); мне нужно сделать что-нибудь дополнительно, чтобы получить ответ USSD? - person Shofiqul Alam; 10.08.2017
comment
@ShofiqulAlam Вы проверили это? - person vasek; 10.08.2017
comment
Нет, ссылка решила мою проблему. Вы можете опубликовать это как ответ, чтобы я мог принять? - person Shofiqul Alam; 10.08.2017
comment
@ShofiqulAlam я отредактировал свой ответ. Пожалуйста, не забудьте также проголосовать за оригинальные ответы, чтобы помочь другим! - person vasek; 14.08.2017

Отправьте USSD-команду следующим образом:

sp.Write("AT+CUSD=1,\"*710#\",15\r");
person Taha teber    schedule 13.08.2017