【问题标题】:Console does not show the entire answar from serial port控制台不显示来自串口的整个答案
【发布时间】:2019-08-09 09:22:56
【问题描述】:

我正在使用 Quectel 的 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;
            }
        }

有什么建议吗?

【问题讨论】:

  • 您的代码在哪里以及如何调用?
  • @B.Letz 代码已编辑。请检查。
  • 尝试发送"at\n""at+cereg?\n"

标签: c# terminal serial-port


【解决方案1】:

您可以在第 7 页看到 here,您需要使用 &lt;CR&gt;&lt;LF&gt; 完成命令。

必须在每个命令的开头设置“AT”或“at”前缀 线。输入&lt;CR&gt; 将终止命令行。

在 C# 中等价于 \r\n

正如@Mong Zhu 指出的,您可以通过使用 serialPort.WriteLine("at");

【讨论】:

  • 或使用serialPort.WriteLine("at");,它会自动完成
猜你喜欢
  • 1970-01-01
  • 2015-05-03
  • 2015-12-19
  • 2021-12-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 2015-12-30
相关资源
最近更新 更多