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.Wri
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)
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");