QSJ198 2020-01-16 10:53 采纳率: 0%
浏览 1288

用arduino ide 写程序控制sim900a发送中文短信

为啥只能发送英文短信,发送中文只收到一个符号,用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);

}

  • 写回答

3条回答 默认 最新

  • 平凡!一族 2021-10-14 20:52
    关注

    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的设置

    1. 0 - 143 对应的保留时间为: (vp + 1)*5 分钟,最大为12小时
    2. 144-167 对应的保留时间为: 12小时 + (vp - 143)*30分钟, 最大为24小时
    3. 168-196 对应的保留时间为: (vp - 166) * 1 天
    4. 197 - 255 对应时间为: (vp - 192)*1 星期

    所以有的模块默认vp = 167对应的就是24小时。

    3.第三个参数略。通常为0
    4.第四个参数:为0则只能发送英文,8为发送中文。

    评论

报告相同问题?