首先,GSM发短信,对英文和中文的处理是不一样的,请参考以下资料:
1 简述
使用GSM模块收发短信,主要有两个部分需要考虑,一个是AT指令,一个串口读写。Tc35i GSM模块在收发短信时,分为两种模式,一为text模式,一为pdu模式,如果只需要发送英文内容,则text模式足矣,但若要发送中文短信,则必须使用pdu模式。串口的读写在不同的系统里是有区别的,在windows下使用系统提供的win32 API可以实现串口操作,在linux下串口作为文件读写,在单片机上串口的读写是把一个个字符送入特定缓冲区即可,但无论在何种系统中,操作串口之前都需要对串口进行初始化操作。
2 AT指令
在使用AT指令发送短信的时候,可以使用串口调试助手(windows和linux下的串口调试助手不同,而且版本也有许多,但使用方法大致相同,都需要先找到串口的端口号,windows下可以到设备管理器中查看(注意安装好usb转串口驱动),linux下可以到/dev下查看,设置波特率9600,校验位None,数据位8,停止位1;windows下可以使用stc-isp带有的串口助手,在linux下可以使用minicom,)来帮助熟悉指令,以及了解短信发送的流程。
2.1 TEXT模式
先对模块SMS进行一些初始设置,AT+CMGF=1设置为Text模式,AT+CSMP=17,167,0,0设置Text模式参数,AT+CSCS=GSM设置GSM字符集,接下来发送一条短信,例如要往15948020629这个号码发送一条短信,输入命令AT+CMGS=15948020629 并回车,返回
>
接着输入短信内容,输入完毕后以->结尾,这个字符是ASCII码中的26(0x1A),一个控制字符,在这里作为结束标志,测试时可以在正常短信内容输入完毕后:先点发送,再以十六进制方式输入1A,1A也就是16进制的026,再点发送,这时接收区就会显示这个符号,以后再需要这个符号时可以直接粘贴使用。如果返回OK就说明短信发送成功。需要注意的是,虽然有短信息服务中心号码设置的命令,不过一般不需要我们设置的,可以使用AT+CSCA?来查询服务中心号码。
下面来往模块中发送一条短信,注意犹豫此时是Text模式,所以发送内容应为英文内容,包括数字,英文标点。发送短信前执行AT+CNMI=2,1
此命令的作用是当有新的短信时给予提醒并显示存储位置,同时还会将信息存储到默认的内存位置。例如发送信息的
1 简述
使用GSM模块收发短信,主要有两个部分需要考虑,一个是AT指令,一个串口读写。Tc35i GSM模块在收发短信时,分为两种模式,一为text模式,一为pdu模式,如果只需要发送英文内容,则text模式足矣,但若要发送中文短信,则必须使用pdu模式。串口的读写在不同的系统里是有区别的,在windows下使用系统提供的win32 API可以实现串口操作,在linux下串口作为文件读写,在单片机上串口的读写是把一个个字符送入特定缓冲区即可,但无论在何种系统中,操作串口之前都需要对串口进行初始化操作。
2 AT指令
在使用AT指令发送短信的时候,可以使用串口调试助手(windows和linux下的串口调试助手不同,而且版本也有许多,但使用方法大致相同,都需要先找到串口的端口号,windows下可以到设备管理器中查看(注意安装好usb转串口驱动),linux下可以到/dev下查看,设置波特率9600,校验位None,数据位8,停止位1;windows下可以使用stc-isp带有的串口助手,在linux下可以使用minicom,)来帮助熟悉指令,以及了解短信发送的流程。
2.1 TEXT模式
先对模块SMS进行一些初始设置,AT+CMGF=1设置为Text模式,AT+CSMP=17,167,0,0设置Text模式参数,AT+CSCS=GSM设置GSM字符集,接下来发送一条短信,例如要往15948020629这个号码发送一条短信,输入命令AT+CMGS=15948020629 并回车,返回
>
接着输入短信内容,输入完毕后以->结尾,这个字符是ASCII码中的26(0x1A),一个控制字符,在这里作为结束标志,测试时可以在正常短信内容输入完毕后:先点发送,再以十六进制方式输入1A,1A也就是16进制的026,再点发送,这时接收区就会显示这个符号,以后再需要这个符号时可以直接粘贴使用。如果返回OK就说明短信发送成功。需要注意的是,虽然有短信息服务中心号码设置的命令,不过一般不需要我们设置的,可以使用AT+CSCA?来查询服务中心号码。
下面来往模块中发送一条短信,注意犹豫此时是Text模式,所以发送内容应为英文内容,包括数字,英文标点。发送短信前执行AT+CNMI=2,1
此命令的作用是当有新的短信时给予提醒并显示存储位置,同时还会将信息存储到默认的内存位置。例如发送信息的