在 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 获得的信息。
我正在使用 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 获得的信息。