と私の目標は、SMSを送信することでした。私はこれを達成することができ、メッセージが送信されました。これは、WriteLine()メソッドが正常に完了したことを示すものです。しかし、私は受信バッファ内の応答を得ることができないようです。私はここでいくつかの答えをstackoverflowで見てエコーをオンにしました。、しかし、私はシリアルポート接続を開くことによって、ATコマンドを送信しようとした無応答
しかし、まだ応答がありません。私はThread.Sleep()を使用して待って、また、ハンドラを使用して、p_DataReceivedを試みました。まだ応答はありません。
一つの例は、「OK」の応答を持っている必要があり、コマンド「AT」シンプルになります。しかし、誰応答は任意のポインタは
(すなわち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)
{ ........}
はあなたのイベントが発火しているのですか?メッセージボックスにnullが表示されていますか? –
イベントがトリガーされず、応答STRが空です(レスポンスSTR = "")。 –
別の質問:異なる "mySerialPort.NewLine ="設定を試すことができますか? Windowsの場合、 "Environment.NewLine"は "\ r \ n"です(CR + LF)。そして、おそらくあなたのモデムは "CR"だけでanwers。試してみる価値がある:mySerialPort.NewLine = "\ r"、またはC#でこのコードが正しいかどうか。 –