Я попытался отправить AT-команды, открыв соединение с последовательным портом, и моей целью было отправить SMS-сообщение. Я смог достичь этого, и сообщение было отправлено, что является признаком успешного завершения метода WriteLine(). Тем не менее, я не могу получить ответ в буферах приема. Я включил эхо, посмотрев на некоторые ответы здесь, на stackoverflow.AT Command Works, но не ответ
Но все еще нет ответа. Я попробовал ожидание с помощью Thread.Sleep(), а также с помощью обработчика p_DataReceived. По-прежнему нет ответа.
Одним примером может быть простая команда «AT», которая должна иметь отклик «ok». Но нет ответов на все (т.е. BytesToRead размер имущественного 0)
Я пытаюсь это с dwm222 4G LTE USB-адаптер D-Link
Все указатели будут очень признательны!
private void button_Click(object sender, RoutedEventArgs e)
{
mySerialPort = new SerialPort("COM15");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.NewLine = Environment.NewLine;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
mySerialPort.Open();
mySerialPort.DiscardInBuffer();
mySerialPort.DiscardOutBuffer();
mySerialPort.WriteLine("ATE1"); //turn on echo
mySerialPort.WriteLine("AT"); //test response
Thread.Sleep(3000);
string responseSTR = mySerialPort.ReadLine();
if (responseSTR.Contains("OK")) //empty string
{
MessageBox.Show(responseSTR);
}
this.SendSms("+XXXXXXXXXXXXXXXXXXX", "Hello From C#");
mySerialPort.Close();
}
public void p_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string s = (sender as SerialPort).ReadExisting();
buff += s;
MessageBox.Show(buff);
}
void SendSms(string destination, string text)
{ ........}
Ваше мероприятие стреляет? и в окне сообщений отображается значение null? –
никакого события не вызвано, а ответSTR пуст, т. Е. ОтветSTR = "". –
Другой вопрос: Можете ли вы попробовать разные настройки «mySerialPort.NewLine =»? Потому что «Environment.NewLine» - «\ r \ n» в Windows (CR + LF). И, может быть, ваш модем отвечает только «CR». Стоит попробовать: mySerialPort.NewLine = "\ r", или что-то в этом коде для C#. –