为啥只能发送英文短信,发送中文只收到一个符号,用unicode转码后也不管用,求帮助
代码如下:
void sendmessage(){
Serial.println("AT");
delay(2000);
Serial.println("AT+CMGF=1");
delay(2000);
Serial.println("AT+CSCS=“UCS2”");
delay(2000);
Serial.println("AT+CSMP=17,167,2,25");
delay(2000);
Serial.println("AT+CMGS=\"\u0031\u0037\u0038\u0036\u0033\u0035\u0032\u0033\u0038\u0034\u0036\"");//转码后的手机号
delay(2000);
Serial.print("\u5bb6\u4e2d\u71c3\u6c14\u6cc4\u6f0f");转码后的中文短信
delay(2000);
Serial.write(0x1A);
}
另一位其实已经回答到了,发中文短信用这个指令
AT+CSMP=17,167,0,8
主要就是第四个参数要写8,不然中文的unicode发送出去后会有乱码
https://www.cnblogs.com/kekeoutlook/p/12048532.html
AT+CSMP 设置短消息文本参数(text模式下)
设置:AT+CSMP=,<vp/scts>,,
响应:+CSMP:,<vp/scts>,,
AT+CSMP
1. 按照不同的位进行介绍
bit 5 4 3 2 1 0
value 0 1 0 0 0 1
①bit 1 0 两位表示 SMS_SUBMIT,取为0 1时方向是手机->消息中心,还有三种取值这里不介绍。
②bit 2 取值 0 表示 后续没有短信息要发送;
取值 1 表示 后续还有短信息。
③bit 4 3 两位可取1 0
④ bit 5 取值 0 关闭传送回报
取值 1 打开传送回报。
通常情况下系统默认为010001即为0X11 十进制为17(此时没有状态报告回报)
2.第二个参数 vp的设置
所以有的模块默认vp = 167对应的就是24小时。
3.第三个参数略。通常为0
4.第四个参数:为0则只能发送英文,8为发送中文。