如何使用簡訊貓傳送中文簡訊
使用簡訊貓收發簡訊,原理是通過串列埠通訊傳送AT指令.當你傳送中文簡訊時,你會又喜悅又困惑,簡訊確實收到了,但是是亂碼的.本文介紹如何正確傳送中文簡訊.
請注意簡訊貓支援SMSText模式,才能通過串列埠通訊傳送AT指令的方式收發簡訊.如果不支援SMSText,可以使用GSMCommunication串列埠通訊,使用pdu編碼簡訊內容.Some advanced GSM modems like WaveCom and Multitech, support the SMStext mode. This mode allows you to send SMS messages using AT commands, withoutthe need to encode the binairy PDU field of the SMS first. This is done by theGSM modem
傳送中文簡訊的原理是設定16進位制模式,同時指定DCS為unicode編碼方式.接收中文簡訊也同樣如此.
AT
AT\r\r\nOK\r\n
設定modem為SMS text mode
AT+CMGF=1<ENTER>
AT+CMGF=1\r\r\r\nOK\r\n
查詢當前引數
AT+CSMP?<ENTER>
AT+CSMP?\r\r\r\n+CSMP:1,167,0,0\r\n\r\nOK\r\n
displays the codepages supported by the modem
AT+CSCS=?
AT+CSCS=?\r\r\n+CSCS:(\"GSM\",\"PCCP437\",\"CUSTOM\",\"HEX\")\r\n\r\nOK\r\n
設定modem為hex mode
AT+CSCS="HEX"<ENTER>
AT+CSCS=\"HEX\"\r\r\r\nOK\r\n
specify the correct DCS (Data Coding Scheme) forUnicode messages, which is 0x08
AT+CSMP=1,167,0,8<ENTER>
AT+CSMP=1,167,0,8\r\r\r\nOK\r\n
設定sms傳送的手機號碼
AT+CMGS="+31638740161"<ENTER>
"AT+CMGS=\"+31638740161\"\r\r\r\n>"
以unicode編碼傳送SMS
6d4b8bd5<CTRL-Z>
"\r\n>"
測試
C# unicode編碼方法
public staticstring ConvertToUTF(string input_text)
{
string _out = String.Empty;
char[] _chars =input_text.ToCharArray();
foreach (char c in _chars)
{
_out +=((Int16)c).ToString("X4");
}
return _out;
}
參考