我試圖用連接到COM端口的GSM調制解調器發送和接收數據。 這裏是我的代碼的重要組成部分:C#: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」(儘管有時我只能得到第一個字母,我認爲這是因爲我讀取數據的方式,應該是單獨的線程否?我可以輕鬆地做到這一點後來)。
我期待他送我回「OK」,當我送他「AT」。
對於設備將我寄回給我的任何內容,有什麼解釋?我想這可能是因爲端口通信設置不正確,而我實際上沒有進入設備,只是將它發回給自己?
謝謝你的答案,但我試圖發送ATE0,然後在。 我回來的答案是「ATE0AT」。看起來他無視我,只是迴應。 – Juicy
更新的答案建議在編寫代碼與之交談之前使用PuTTY嘗試命令。 – Crake
此外,請確保您使用sp.WriteLine而不是sp.Write – Crake