logo资料库

ATK-SIM900(A)模块彩信功能_AN1414.pdf

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
AN1414 ATK-SIM900(A) GSM/GPRS模块彩信使用说明
1、适用范围
2、彩信收发的使用说明
2.1 硬件连接
2.2 发送/接收彩信的指令讲解
2.3、基于ATK-SIM900A使用串口通信的实例验证
2.3.1 基本设置
2.3.2 发送彩信
2.3.3 接收彩信
www.alientek.com ALIENTEK STM32 开发板 AN1414 AN1414 ATK-SIM900(A) GSM/GPRS 模块彩信使用说明 本文档分为如下几部分: 1, 适用范围 2, 彩信收发的使用说明 1、适用范围 本文详细介绍了如何通过 AT 命令来使用 SIM900A 的彩信收发功能,由于 ATK-SIM900A 的固 件版本不同,可能导致部分模块并不支持彩信收发。因此,在使用此功能之前,请先确定 ATK-SIM900A 的固件版本,查询以及升级固件的详细步骤请参考文档《ATK-SIM900(A)模块升级 说明_AN1413.pdf》,只有在版本号是:1137B01SIM900A64_ST_ENHANCE,或更高版本时才 能完成以下功能。(特别注意:本文档的 彩信收发教程不仅适用于 ATK-SIM900A 模块,同 样也适用于 ATK-SIM900 模块,指令和操作步骤完全兼容,这里仅以 ATK-SIM900A 为例讲解。) 2、彩信收发的使用说明 2.1 硬件连接 在使用 ATK-SIM900A 模块的彩信发送和接收功能之前,请先准备好必要的硬件设备,并且 按照如下操作做好准备: 1, 使用一个外部直流电源给 ATK-SIM900A 模块供电(推荐我们的 12V 1A 电源)。 2, 使用一根 USB 转 RS232 串口线连接 ATK-SIM900A 模块与电脑(推荐我们的 USB 转串 口线)。 3, 请按照文档《ATK-SIM900A 模块升级说明_AN1413》的内容查询并升级 ATK-SIM900A 的 固件版本(若已经升级固件,此步骤可以忽略)。 4, 给 ATK-SIM900A 模块上电(按 K1,蓝色电源指示灯亮)。 5, ATK-SIM900A 模块开机(长按 PWR_KEY 键开机,红色 NET_STA 指示灯闪烁)。 6, 准备一部能够正常使用的移动手机设备(已开通 GPRS 业务、彩信业务)。 要完成本文档例程的所有功能测试,请大家务必准备好以上硬件,否则彩信的发送和接收 功能可能无法实现。 2.2 发送/接收彩信的指令讲解 本节,我们将介绍如何使用 ATK-SIM900A 模块进行发送和接收彩信,接下来需要用到的指 令有:AT+CMMSINIT/AT+CMMSCURL/AT+CMMSCID/AT+CMMSPROTO/AT+CMMSSENDCFG/ AT+ SAPBR/AT+CMMSEDIT/AT+CMMSDOWN/AT+CMMSRECP/AT+CMMSSEND/AT+CMMSRECV/AT+CMMS READ/ AT+CMGD/ AT+CMMSTERM 等 14 条 AT 指令,下面我们分别介绍这些指令。 AT+CMMSINIT,用于初始化彩信功能,如返回 OK,则初始化成功,否则请关机重启后再 设置。 AT+CMMSCURL,用于配置彩信中心地址,格式为:AT+CMMSCURL=, 若 SIM 卡是移动运营商,则发送:AT+CMMSCURL="mmsc.monternet.com"配置;若 SIM 卡是联通运 www.openedv.com 开源电子网 2014-09-13
www.alientek.com ALIENTEK STM32 开发板 AN1414 营商,则发送 AT+CMMSCURL="mmsc.myuni.com.cn" 配置。返回 OK 即成功。 AT+CMMSCID,用于承载上下文 ID,通过发送 AT+CMMSCID=1,返回 OK 则使能成功。 AT+CMMSPROTO,用于配置彩信 IP 地址和端口号,格式为:AT+CMMSPROTO=,<端口号>,由于移动和联通的彩信 IP 地址都是"10.0.0.172",且端口也都相同是 80,因此, 可以发送:AT+CMMSPROTO="10.0.0.172",80,配置地址和代理服务器端口。返回 OK 则配置 成功。 AT+CMMSSENDCFG , 用 于 设 置 彩 信 功 能 的 参 数 , 格 式 为 : AT+CMMSSENDCFG = [valid],[pri],[sendrep],[readrep],[visible],[class] 。 在 这 里 我 们 都 取 默 认 值 即 可 , 发 送 指 令 : AT+CMMSSENDCFG=6,3,0,0,2,4 即可设定完所有的基本参数。返回 OK 则设置成功。 AT+SAPBR,用于 IP 应用设置,格式为:AT+SAPBR=,[,],[], 其中 cmd_type 表示 0 关闭、1 打开、2 请求、3 设置和 4 获取承载的参数;cid 是承载文件标 示,固定为 1;ConT 和 ConV 是承载参数。该指令用来激活承载,整个激活过程需要发送 4 次该指令,带不同参数实现,如下: AT+SAPBR=3,1,"Contype","GPRS" //激活承载 AT+SAPBR=3,1,"APN","CMWAP" AT+SAPBR=1,1 AT+SAPBR=2,1 以上四条指令,对移动联通的 GSM 卡都适用。 AT+CMMSEDIT,用于开启或者禁止编辑,当发送 AT+CMMSEDIT=1,则开启编辑模式; 当发送 AT+CMMSEDIT=0,则禁止编辑模式,同时可以清空 Buff。 AT+CMMSDOWN,用于上传文件到缓存,标准格式为:AT+CMMSDOWN=<"type">,,
www.alientek.com ALIENTEK STM32 开发板 AN1414 那么,我们直接读取第二个文件就可以了。 AT+CMMSREAD,用于读取彩信的文件信息,格式为:AT+CMMSREAD=,num 指 的是指令 AT+CMMSRECP 返回的信息中需要读取的文件编号,例如上一条指令返回的信息中 image0.jpg 文件在第二个位置,若想读取该图片文件,则 num 值取 2 即可,若想读取 smil.xml, 则 num 值应该取 1。 +CMTI: "SM",N,"MMS PUSH",这是一条彩信提示的返回命令,其中参数 N 代表这是接收 到的第 N 条彩信。然后通过上述指令 AT+CMMSRECV=N,即可获得该彩信的具体信息。 AT+CMGD,用于删除彩信信息,由于 SIM 标准格式最多只能存储 10 个文件,为了便于存 储和读取,应该及时的删除读取过了的彩信,格式为:AT+CMGD=,表示删除第 num 条 彩信。返回 OK 则删除成功。 AT+CMMSTERM,用于退出彩信模式,返回 OK 则退出成功,否则可能之前就已经退出了。 注意:对于 ATK-SIM900A 模块,发送完成之后可以接收,接收完成之后也可以发送。但 是在发送之前需要配置 AT+CMMSEDIT=1,允许编辑彩信内容;在接收读取内容之前需要配置 AT+CMMSEDIT=0,不允许编辑(该指令同时清空 buff)。同时也支持使用移动手机设备接收和 发送。只是手机自带了解码的步骤,接收彩信更加方便清晰。对于以上指令如有不理解的地方, 在操作过程中遇到一些 error 可以参考文档《SIM900_MMS_AT Command Manual_V1.00.pdf》, 文件路径:ATK-SIM900A 模块资料\4,SIM900A 模块资料。 2.3、基于 ATK-SIM900A 使用串口通信的实例验证 2.3.1 基本设置 首先打开串口助手 XCOM,文件路径在:ATK-SIM900A 模块资料\3,配套软件\串口调试助 手,设置好 COM 口(连接到 ATK-SIM900A 模块的 COM 端口,我电脑是 COM4),设置好波特 率 115200,勾选发送新行(必选!即 XCOM 自动添加回车换行功能),如下图 2.3.1.1 所示。然 后根据 2.2 节中的指令讲解,给 ATK-SIM900A 模块发送以下指令进行网络配置和参数设定,如 图 2.3.1.1 所示。 AT+CMMSINIT //初始化彩信 AT+CMMSCURL="mmsc.monternet.com"//配置中国移动手机彩信中心地址 AT+CMMSCID=1//设置承载上下文 ID AT+CMMSPROTO="10.0.0.172",80 //配置网络 IP 和代理服务端口 AT+CMMSSENDCFG=6,3,0,0,2,4 //设置彩信参数 AT+SAPBR=3,1,"Contype","GPRS" //激活承载 AT+SAPBR=3,1,"APN","CMWAP" AT+SAPBR=1,1 AT+SAPBR=2,1 www.openedv.com 开源电子网 2014-09-13
www.alientek.com ALIENTEK STM32 开发板 AN1414 图 2.3.1.1 配置网络和参数 2.3.2 发送彩信 先按照 2.3.1 小节配置好之后,先发送:AT+CMMSEDIT=1,进入编辑模式。然后,按照 表 2.2.1 设置好指令 AT+CMMSDOWN 的参数值,确定需要发送的文件大小和类型,并发送该 指令,这里我们随以一张小的图片:keil.png 为例,该文件大小是 6186 字节,所以在 CMMSDOWN 指令参数设置的时候,第一个参数是“PIC”,即发送图片彩信,第二个参数是 6186,即我们 要发送的图片文件大小,第三个参数我们设置 40000 即可,如图 2.3.2.1 所示。 www.openedv.com 开源电子网 2014-09-13
www.alientek.com ALIENTEK STM32 开发板 AN1414 图 2.3.2.1 彩信发送设置 上图中,在等待 SIM900A 返回 CONNECT 之后(图中①处),利用串口助手 XCOM 打开需要发送 的文件,按照如图 2.3.2.1 中所示的②-③-④步骤依次操作,打开、选择、发送文件。 接下来发送指令:AT+CMMSRECP="1343781****",这里的手机号码没有写全是为了避免 您把彩信发到我的手机上来了,设置完移动手机的手机号之后(或者可以再使用另外一个 ATK-SIM900A 模块作为接收端,但是需要事先按照 2.3.1 小节配置好网络和参数),再给发送指 令“AT+CMMSSEND”,根据发送文件大小及网络信号质量的好坏,发送时间会有所不同,请 耐心等待,直至返回 OK 即可。至此,我们才算成功完成了一条彩信的发送。1343781****的手 机上有彩信提醒,可以读取收到的彩信图片内容。 最后在发送端发送: AT+CMMSEDIT=0 AT+SAPBR=0,1 //退出配置模式, //退出承载 //退出彩信功能 AT+CMMSTERM 退出彩信功能,如图 2.3.2.2 所示: www.openedv.com 开源电子网 2014-09-13
www.alientek.com ALIENTEK STM32 开发板 AN1414 最后,在彩信发送部分,发出的指令如下: 图 2.3.2.2 目的号码设定以及退出模式 AT+CMMSEDIT=1 AT+CMMSDOWN="PIC",6168,40000 //例程是使用 png 格式图片,参数各人因情况而定 //允许编辑 MMS AT+CMMSRECP="1343781****" AT+CMMSSEND 退出彩信功能指令如下: AT+CMMSEDIT=0 AT+SAPBR=0,1 AT+CMMSTERM 2.3.3 接收彩信 //设置目标手机号 //开始发送 //退出配置和编辑模式 //退出承载 //退出彩信功能 在接收端首先是按照 2.3.1 小节配置好网络和各个参数。然后使用移动手机(或者使用另一 个 ATK-SIM900A 模块作为发送端,按照 2.3.1 节和 2.3.2 节指令操作)发送一条格式为.png 的图 片彩信之后,接收端会有信息提示,提示收到第 N 条彩信,发送查询指令 AT+CMMSRECV=N 获 取彩信地址信息,再根据串口返回的信息,选择自己需要读取的第 N 条彩信的 M 个文件,使用 AT+CMMSREAD=M 命令来读取该文件内容即可。由于 MMS 标准版本最多可以接收 10 个文件, 为了方便存储和读取,应及时的使用指令 AT+CMGD=N 删除接收到的第 N 条彩信。实例操作如 图 2.3.3.1 所示: www.openedv.com 开源电子网 2014-09-13
www.alientek.com ALIENTEK STM32 开发板 AN1414 其中红色框框内,我们先发送了:AT+CMMSEDIT=0,退出编辑模式,然后模块在收到彩信 图 2.3.3.1 接收彩信信息 后,会提示: +CMTI: "SM",2,"MMS PUSH" 表示收到了一条彩信。然后,发送指令:AT+CMMSRECV=2,获取 MMS 并查询其地址信 息,这里的参数 2 是根据彩信提示处的参数而定,千万不要照搬我的参数值,每个 SIM 卡所包 含的彩信数目不同,其值也就不相同。再根据这条指令返回值: +CMMSRECV: "13437811134","2014-09-13,04:58:37","",6566 1,"smil.xml",10,251 2,"IMAGE_1410584439843.jpg",7,6186 可知,我们的图片以 jpg 文件形式接收的(注意,这里 SIM900A 显示的 jpg 格式不一定正 确,以返回的数据内容为准),前面的标号是 2,所以该文件存储在第 2 个位置,因此再使用 AT+CMMSREAD=2 来读取这个图片文件,读到如图 2.3.3.1 中蓝色框内的内容。 在 蓝 色 框 框 内 我 们 可 以 看 到 一 大 堆 的 乱 码 , 是 不 是 很 头 疼 ? 别 急 , 这 是 由 指 令 AT+CMMSREAD 读取的文件内容。但是由于没有选择 16 进制显示,所有的数据 0,都会丢失, 导致数据不完整。如果接收到的彩信是文本文件,我们读到的信息将是简短且清晰的文本内容, 文本彩信的发送和接收与图片彩信的发送接收步骤完全一样,只需要注意指令 AT+CMMSDOWN 的参数有所不同而已, 这里不再演示。 对于 2.3.3.1 最后得到的图片信息,需要使用 WinHex 软件(路径:SIM900A 模块资料\3, 配套软件\winhex\WinHex.exe)将其转换成 png 或 JPEG 图片文件,才可查看。利用 WinHex,我 们可以将十六进制格式的文件另存为.png/.jpg 格式,然后就可看到之前发送的图片了。 大家一定要特别注意:如果不选择 16 进制显示,串口助手会将接收到的数据 0 全部过滤掉, 所以在读取彩信内容之前,一定要选择 16 进制显示,这个必选,然后再发送指令:AT+CMMSREAD =读取第 num 个位置的文件,即图片内容,只有这样我们才能读取到完整的图片信息。 否则会有数据 0 丢失,导致图片内容不完整。正确操作步骤如图 2.3.3.2 中的①-②-③顺序操作: www.openedv.com 开源电子网 2014-09-13
www.alientek.com ALIENTEK STM32 开发板 AN1414 图 2.3.3.2 读取内容步骤 下面的图 2.3.3.3 就是我们读取到完整数据后的界面,按照上图 2.3.3.2 的步骤,内容中应该 会有较多的数据 0 出现。否则,你读取的数据可能会有丢失。同时,这里也不能取消 16 进制显 示,否则同样会丢失数据 0,导致数据信息不完整 图 2.3.3.3 完整数据复制 对于 png 格式的图片,则前 4 个字节是:89 50 4E 47,而对于 JPEG 格式的图片,则前四个 字节是:FF D8 FF E0。模块在发送完图片数据之后,会返回:OK,且最后的 OK 之前会有一个回 车,即十六进制的:0D 0A,因此,我们可以通过这个回车符来判断文件的结束位置。 www.openedv.com 开源电子网 2014-09-13
分享到:
收藏