我正在使用移遠通信的 BC66 調制解調器。在我的程序中,當我向調制解調器輸入一些 AT 命令時,它無法顯示調制解調器的完整響應,而是顯示 AT 命令的回復。見下圖:相反,使用終端程序并鍵入 AT 命令,我得到了請求的狀態。見下圖:這是我在程序中所期待的,但不幸的是沒有發生。代碼片段:static void Main(string[] args) { if (InitPort() == true) { Console.WriteLine("Port initialized"); TestAT(); } }private static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e){ byte[] data = new byte[serialPort.BytesToRead]; serialPort.Read(data, 0, data.Length); Console.WriteLine(Encoding.ASCII.GetString(data)); //Console.WriteLine(serialPort.ReadExisting());}private static void TestAT(){ for (int i = 0; i < 10; i++) { serialPort.Write("at"); Thread.Sleep(2000); serialPort.Write("at+cereg"); Thread.Sleep(2000); }}private static bool InitPort() { serialPort.PortName = "COM51"; serialPort.BaudRate = 115200; serialPort.DataBits = 8; serialPort.Parity = Parity.None; serialPort.StopBits = StopBits.One; serialPort.DataReceived += SerialPort_DataReceived; try { serialPort.Open(); return true; } catch { return false; } }關于哪里出了問題有什么建議嗎?
1 回答

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
正如您在第 7 頁上看到的,您需要使用 來完成命令<CR><LF>
。
必須在每個命令行的開頭設置“AT”或“at”前綴。輸入
<CR>
將終止命令行。
在 C# 中,等價的是\r\n
正如@Mong Zhu 指出的,你可以通過使用來實現這一點?serialPort.WriteLine("at");
- 1 回答
- 0 關注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消