У меня есть GSM-модем, у которого есть определенный набор команд, связанный с ним. Я хочу вызвать эти команды, используя мой код С#. Можно ли это сделать?
Модель модема GSM: MOD 9001 Модем BENQ GSM/GPRS
У меня нет библиотеки для взаимодействия с этим модемом
Я вижу, что этот вопрос довольно старый, но он по-прежнему борется с моим модемом. Я использую С# 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"
в конец всех команд модему. Принял мне день, чтобы узнать, почему-то, почему мой модем не ответил на мою команду...: -)
Не зная подробностей конкретного модема, о котором вы говорите, общий подход к общению с модемами заключается в том, чтобы открыть соединение с последовательным портом и поговорить с модемом в виде обычного текста. Обычно используется некоторый вариант набор команд Hayes. Для .NET вы можете обратиться к System.IO.Ports.SerialPort
(см. MSDN). Параметры подключения (скорость передачи, бит данных, стоп-биты, четность, управление потоком) зависят от модема, но хорошим началом является попытка 57600, 8 бит данных, 1 стоповый бит, контроль четности и аппаратного потока; это типичные параметры. Имя порта сильно зависит от того, как оно связано с вашей системой, но хорошее место для поиска, если вы не знаете, является диспетчером устройств Windows в COM-портах.
serialPort1 = new EnhancedSerialPort();
serialPort1.PortName ="COM 11"; // check it in your case
serialPort1.BaudRate = 115200; //suggested
recievingBuffer = "";
serialPort1.ReadTimeout = 400;
serialPort1.WriteTimeout = 400;
для уведомления о входящих звонках: -
recievingBuffer + = serialPort1.ReadExisting();
чтобы активировать вашу GSM-отправку следующей команды: -
serialPort1.Write( "AT\г\п" );