控制台不显示来自串行端口的整个 answar

我正在使用移远通信的 BC66 调制解调器。在我的程序中,当我向调制解调器输入一些 AT 命令时,它无法显示调制解调器的完整响应,而是显示 AT 命令的回复。见下图:


https://img3.mukewang.com/64e1b9510001ea9c04010264.jpg

相反,使用终端程序并键入 AT 命令,我得到了请求的状态。见下图:

https://img.mukewang.com/64e1b95c0001ea1a02990289.jpg

这是我在程序中所期待的,但不幸的是没有发生。


代码片段:


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;

            }

        }

关于哪里出了问题有什么建议吗?


翻阅古今
浏览 67回答 1
1回答

紫衣仙女

正如您在第 7 页上看到的,您需要使用 来完成命令<CR><LF>。必须在每个命令行的开头设置“AT”或“at”前缀。输入<CR>将终止命令行。在 C# 中,等价的是\r\n正如@Mong Zhu 指出的,你可以通过使用来实现这一点 serialPort.WriteLine("at");
打开App,查看更多内容
随时随地看视频慕课网APP