Доступ к GSM модему в C # - PullRequest
2 голосов
/ 31 августа 2009

У меня есть модем GSM, с которым связан определенный набор команд. Я хочу вызвать эти команды, используя мой код C #. Возможно ли это сделать?

Модель GSM модема: MOD 9001 Модем GSM / GPRS BENQ

У меня нет библиотеки для взаимодействия с этим модемом

Ответы [ 3 ]

1 голос
/ 02 марта 2012

Я вижу, что этот вопрос довольно старый, но борется с моим собственным модемом по тем же причинам. Я использую C # atm для доступа к своему модему.

То, как я подключался к модему, было, как упоминалось ранее System.IO.Ports.SerialPort. Вы должны указать ему, к какому COM-порту подключаться.

Если у вас есть стандартные драйверы для установленного модема и он подключен к компьютеру, вы можете получить список открытых COM-портов, используя:

string[] com_ports = SerialPort.GetPortNames();

Предполагая, что вы хотите подключиться к первому COM-порту из массива выше. Открыть порт просто, как:

SerialPort port = new SerialPort();
port.portname = com_ports[0];
// ... Insert other port parameters
port.Open();

Запись команд в модем так же проста, как:

port.write("some command");

И ответ возвращается:

String response = port.ReadExisting();

.. Просто не забудьте добавить "\r" в конец всех команд модема. Мне потребовался день, чтобы узнать, почему мой модем не отвечает на мою команду ...: -)

1 голос
/ 25 июля 2011

Не зная каких-либо подробностей о конкретном модеме, о котором вы упомянули, общий подход к связи с модемами состоит в том, чтобы открыть соединение через последовательный порт и общаться с модемом в виде простого текста. Обычно используется некоторый вариант набора команд Хейса . Для .NET вы можете обратиться к System.IO.Ports.SerialPort (см. MSDN ). Параметры соединения (скорость передачи, биты данных, стоповые биты, четность, управление потоком) зависят от модема, но хорошее начало - это попробовать 57600, 8 бит данных, 1 стоповый бит, без контроля четности и аппаратного управления потоком; это типичные параметры. Название порта в значительной степени зависит от того, как он подключен к вашей системе, но если вы не знаете, это хорошее место, если вы используете диспетчер устройств Windows под COM-портами.

0 голосов
/ 18 апреля 2018
    serialPort1 = new EnhancedSerialPort();
    serialPort1.PortName ="COM 11";  // check it in your case
    serialPort1.BaudRate = 115200; //suggested
    recievingBuffer = "";
    serialPort1.ReadTimeout = 400;
    serialPort1.WriteTimeout = 400;

для уведомления о входящих звонках: -

recivingBuffer + = serialPort1.ReadExisting ();

для активации вашего GSM отправьте следующую команду: -

serialPort1.Write ( "AT \ г \ п");

...