【发布时间】:2015-03-02 23:57:00
【问题描述】:
我使用此代码发送了 USSD 命令:
SerialPort port = new SerialPort();
port.BaudRate = 921600;
port.PortName = "COM16";
port.Parity = Parity.None;
port.DataBits = 8;
port.StopBits = StopBits.One;
port.ReadTimeout = 3000;
port.WriteTimeout = 3000;
port.DataReceived += port_DataReceived;
port.Open();
port.Write("AT+CUSD=1,\"*140*1#\"" + "\r\n");
void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort spL = (SerialPort)sender;
byte[] buf = new byte[spL.BytesToRead];
spL.Read(buf, 0, buf.Length);
foreach (Byte b in buf)
{
message += b.ToString();
}
var result = Encoding.ASCII.GetString(buf);//just return OK
}
为什么只在结果中检索 OK?
在这种情况下,我想找回我的余额,我必须收到这样的答案:“你的余额是 100$...”,但只需检索:“AT+CUSD=1,\”*140*1#\” \r\n\OK\r\n" 但是当我通过调制解调器自己的应用程序发送此命令时,从操作员那里检索正确的响应,这意味着我的发送命令正常,但该应用程序收到所有答案但我收到一半。
【问题讨论】:
-
你找到解决方案了吗?我面临同样的问题。
-
这是因为代码首先收到调制解调器响应(这没关系),然后在一小段时间后收到网络响应(这是实际余额消息)