Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Набор номера с использованием C#.net с помощью AT-команд

Автор вопроса: HazoomoОтветов: 3

Я хочу создать программу С#, которая подключается к моему мобильному телефону с помощью USB-кабеля, чтобы просто позвонить. Я нашел, как подключиться через SerialPort и как сделать вызов с помощью AT-команд, но когда я запускаю свою программу и нажимаю, чтобы сделать вызов, ничего не происходит. Это мой код, пожалуйста, помогите мне:

SerialPort SP = new SerialPort("COM3");
SP.BaudRate = 9600;
SP.Parity = Parity.None;
SP.DataBits = 8;
SP.StopBits = StopBits.One;
SP.RtsEnable = true;
SP.DtrEnable = true;
SP.Encoding = System.Text.Encoding.Unicode;
SP.ReceivedBytesThreshold = 1;
SP.NewLine = Environment.NewLine;
SP.Open();
SP.Write("ATDT 0999182542"+ Environment.NewLine);

SP.Close();
  • В этой строке нет пробела; посмотрите, что происходит на serialmon.com Alex K. 07.09.2012
  • @hazoomo, как я могу подключить сим-модем мобильного телефона к системному порту связи. Просто подключив USB-кабель, он не показывает com-порт. Hot Cool Stud 06.09.2016

at-command

Ответы

Ответ 1 · рейтинг 4 · Cdeez

Прежде всего, чтобы увидеть, подключен ли ваш модем, отправьте на порт команду AT. Если в ответ вы получите OK, это означает, что ваш модем подключен.

Синтаксис для вызова:

ATDYourphnumber; //Не забудьте ";"

Пример: ATD9012345645;

Таким же образом вы должны писать в порт.

Синтаксис:

SP.WriteLine("ATD"+phonenumber+";");

Вы можете использовать WriteLine, так как это также служит \r\n.

Обновление: как увидеть ответ от модема:

После SP.Open() ;

string cmd = "AT";
SP.WriteLine(cmd + "\r");
SP.Write(cmd + "\r");
Thread.Sleep(500);
string ss= SP.ReadExisting();
if(ss.EndsWith("\r\nOK\r\n"))
  {
   MessageBox.Show("Modem is connected");
  }

Ответ 2 · рейтинг 2 · FraK

@Cdeez Твой ответ лучший! это работает просто отлично XD Я пробовал, но моя ошибка заключалась в том, что я не включил "\ r", который работает как нажатие "ввода", и вам нужно нажать ввод, чтобы команда начала действовать. Кстати, вот мой способ вызова, и еще раз спасибо @Cdeez!:

private void Call() {
        SerialPort celu = new SerialPort();
        celu.PortName = "COM13"; // You have check what port your phone is using here, and replace it
        celu.Open();
        string cmd = "ATD";  // Here you put your AT command
        string phoneNumber = "784261259"; // Here you put the phone number, for me it worked just with the phone number, not adding any other area code or something like that
        celu.WriteLine(cmd + phoneNumber + ";\r");
        Thread.Sleep(500);
        string ss = celu.ReadExisting();
        if (ss.EndsWith("\r\nOK\r\n"))
        {
            MessageBox.Show("Modem is connected \r Calling : " + phoneNumber);
        }
        celu.Close();
    }

Ответ 3 · syned

Как насчет инструментов ведения журнала COM-порта. Вы используете его? Ваши команды отправлялись на COM-порт?

Насколько я знаю, команда дозвона - это ATD[Number]; поэтому попробуйте переписать свой код следующим образом:

    SP.Write("ATD0999182542;"+ Environment.NewLine);

Попробуйте использовать эту библиотеку: GSM Communication Library

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы