COM ポートに接続された GSM モデムでデータを送受信しようとしています。これが私のコードの重要な部分です:
SerialPort sp = new SerialPort();
sp.PortName = "COM1";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.Parity = Parity.None;
sp.StopBits = StopBits.One;
sp.ReadTimeout = 5000;
sp.Open();
if (sp.IsOpen)
{
Console.WriteLine(sp.PortName + " is open");
Console.WriteLine("Trying to write data");
sp.Write("AT");
Console.WriteLine("Data has been sent");
Console.WriteLine("Trying to read data");
char[] read = new char[200];
sp.Read(read, 0, 20);
foreach (char chr in read)
{
Console.Write(chr);
}
Console.WriteLine();
}
エラーは発生しませんが、GSM デバイスは私が送信したものをそのまま送信しています。この場合AT. 私が「BOO」を送ると、彼は「BOO」を送り返します(最初の文字しか返さないこともありますが、これはデータの読み取り方法によるものだと思います。別のスレッドにすべきではありませんか?これは簡単にできます後で)。
私が彼に「AT」を送ると、彼は私に「OK」を送ってくれることを期待しています。
私が彼に送ったものは何でも、デバイスが私に送り返すことについて、どのような説明があり得るでしょうか。ポート通信が適切に設定されておらず、実際にはデバイスに到達していない可能性があると考えていました。