在 C# 中使用 gsm 调制解调器读取短信时出现错误数据

Error data while reading sms with gsm modem in C#

我正在使用 iball 3.5G 连接(版本 3.1.0)。

这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    SerialPort sp = new SerialPort("COM6",115200);
    sp.Parity = Parity.None;
    sp.DataBits = 8;
    sp.StopBits = StopBits.One;
    sp.Handshake = Handshake.RequestToSendXOnXOff;
    sp.DtrEnable = true;
    sp.RtsEnable = true;
    sp.NewLine = Environment.NewLine;
    sp.Encoding.Equals("iso-8859-1");

    sp.Open();
    sp.Write("AT" + System.Environment.NewLine);
    Thread.Sleep(3000);

    sp.WriteLine("AT+CMGF=1" + System.Environment.NewLine);
    Thread.Sleep(3000);

    sp.WriteLine("AT+CMGL=\"ALL\"\r" + System.Environment.NewLine);
    Thread.Sleep(3000);

    MessageBox.Show(sp.ReadExisting().ToString());
}

但它显示:

我尝试了许多不同的代码变体。请给我一个解决方案..

所以看起来你已经正确地完成了所有事情,你将模式设置为文本并发送 AT+CMGL="ALL" 来接收消息。在我看来,您的代码实际上工作正常。调制解调器正在给你一个响应,只是没有格式化为文本。它看起来像是来自网络的二进制消息或控制消息。并非所有 SMS 消息都可以显示为文本!您能否尝试从您的 phone 向调制解调器发送一条简单的文本消息,例如 "Test 123" 并查看您从 At+CMGL 获得的信息。