我试图通过打开串口连接发送AT命令,我的目标是发送一条短信。我能够实现这一点,并且发送了消息,这是WriteLine()方法成功完成的标志。但是,我似乎无法得到我的接收缓冲区中的任何响应。我已经打开回声通过查看一些在这里stackoverflow上的答案。AT Command Works,但没有回应
但仍然没有回应。我尝试使用Thread.Sleep()等待并使用处理函数p_DataReceived等待。仍然没有回应。
一个例子是简单的“AT”命令,其应该具有“OK”的响应。但也有完全没有反应(即BytesToRead属性大小为0)
我与d-Link的dwm222 4G LTE USB适配器尝试这种
任何指针将不胜感激!
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)
{ ........}
您的活动正在开火吗?和messagebox显示为空? –
没有事件触发,responseSTR为空,即responseSTR =“”。 –
另一个问题:你可以尝试不同的“mySerialPort.NewLine =”设置?因为“Environment.NewLine”在Windows(CR + LF)上是“\ r \ n”。也许你的调制解调器只有“CR”。值得一试:mySerialPort.NewLine =“\ r”,或者任何在C#中的正确代码。 –