Я хочу создать программу С#, которая подключается к моему мобильному телефону с помощью 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();
Ответ 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