Reputation: 227
I am sending USSD code on modem through serial port. But always it is giving ERROR in response.
AT commands I am sending are: in sequence:
serialPort.Write("AT+CMGF=0" + "\r\n");
serialPort.Write("AT+CUSD=1,\"*135#\"" + "\r\n");
when I am configuring message format in first AT command, it is giving 'OK' response. But on sending USSD code, response is always 'ERROR'. Why is it so?
Upvotes: 3
Views: 4314
Reputation: 1026
First, AT command is ended by "\r" in C#. You may also to check TE Character set of your modem.
serialPort.Write("AT+CSCS?\r");
if Character Set is "UCS2" use the following conversation:
serialPort.Write("AT+CUSD=1,\"" + UnicodeStr2HexStr("*135#") + "\",15" + "\r");
And
public static String UnicodeStr2HexStr(String strMessage)
{
byte[] ba = Encoding.BigEndianUnicode.GetBytes(strMessage);
String strHex = BitConverter.ToString(ba);
strHex = strHex.Replace("-", "");
return strHex;
}
Please see also https://stackoverflow.com/a/25155746/638977 (Convert to UCS2)
Upvotes: 3
Reputation: 98
Don't use \n
in end of command, use only \r
.
Form of CUSD command is: AT+CUSD=1,"*135#",15
.
In C# it should be:
serialPort.Write("AT+CMGF=0" + "\r");
serialPort.Write("AT+CUSD=1,\"*135#\",15" + "\r");
Upvotes: 6