将USSD代码发送到C#中的调制解调器,并始终返回错误
我通过串口在调制解调器上发送USSD代码。但它总是给出错误的回应 我发出的命令包括: 依次:将USSD代码发送到C#中的调制解调器,并始终返回错误,c#,decode,at-command,modem,ussd,C#,Decode,At Command,Modem,Ussd,我通过串口在调制解调器上发送USSD代码。但它总是给出错误的回应 我发出的命令包括: 依次: serialPort.Write("AT+CMGF=0" + "\r\n"); serialPort.Write("AT+CUSD=1,\"*135#\"" + "\r\n"); 当我在first AT命令中配置消息格式时,它会给出“OK”响应。但在发送USSD代码时,响应总是“错误”。为什么会这样 不要在命令末尾使用\n,只使用\r CUSD命令的形式是:AT+CUSD=1,“*135#”,15 在
serialPort.Write("AT+CMGF=0" + "\r\n");
serialPort.Write("AT+CUSD=1,\"*135#\"" + "\r\n");
当我在first AT命令中配置消息格式时,它会给出“OK”响应。但在发送USSD代码时,响应总是“错误”。为什么会这样 不要在命令末尾使用
\n
,只使用\r
CUSD命令的形式是:AT+CUSD=1,“*135#”,15
在C#中,它应该是:
serialPort.Write("AT+CMGF=0" + "\r");
serialPort.Write("AT+CUSD=1,\"*135#\",15" + "\r");
首先,AT命令在C#中以“\r”结尾。 您还可以检查调制解调器的TE字符集
serialPort.Write("AT+CSCS?\r");
如果字符集为“UCS2”,请使用以下对话:
serialPort.Write("AT+CUSD=1,\"" + UnicodeStr2HexStr("*135#") + "\",15" + "\r");
及
另请参见(转换为UCS2)这是正确的,始终使用
\r
在命令行终止。如何再次将十六进制转换为Str
public static String UnicodeStr2HexStr(String strMessage)
{
byte[] ba = Encoding.BigEndianUnicode.GetBytes(strMessage);
String strHex = BitConverter.ToString(ba);
strHex = strHex.Replace("-", "");
return strHex;
}