1.数据格式分类
SM10模块的作用就是收发数据。收发方式是指上位机怎样将要发送的数据传送给模块,模块收到的数据又以什么样的方式传送给上位机。SM10的收发方式有两种,一种是有格式的方式,一种是透明方式。有格式传输是指传输数据时按照一定的通信格式与模块通信;无格式传输是指传输的数据无格式,发送端发送什么数据接收端就接收什么数据,在无格式传输中目的站点的编号是隐含的,隐含的方式是隐含在接收到的数据中,收到数据后就将收到数据的源站点号设为下次发送数据的目的站点。
收发的数据内容可以是二进制数据、汉字和字符。实际上当模块对模块传输时无论是汉字或字符都用二进制以字节为单位表达。也就是说传输的都是二进制数据。当模块对手机传输时手机要知道收到的数据是汉字还是字符以便选择显示方式,因此上位机在使用SM10给手机发送数据时要区分是汉字还是字符。收发方式中的有格式方式就很好的解决了这个问题。
2.发送接收数据的格式-有格式
格式1
这种格式适用于:模块对模块收发二进制数据和模块对手机收发汉字和字符混合的数据
字头:D7H,1 字节,表示传输的数据是汉字或十六进制数据 。
控制字:01H,1 字节
手机号码:6 字节的 8 位二进制 BCD 码
将电话号码转换成数据包中 BCD 码的格式的步骤就是:
1.在电话号码 在模式1下模块是用GSM模块的短信息功能来传输数据的,所以在使用它传输数据的时候就要用到电话号码。为了规范和方便,下面介绍数据包中电话号码的表示方法。数据包中用6个8位二进制字节表示电话号码,每个字节中高4位和低4位均用BCD码表示1位十进制的电话号码,这样每个字节可表示两位电话号码,6个字节共可表示12位电话号码,因现行的电话号码均为11位,而6字节能表示12位十进制的BCD数,所以在传输数据表示电话号码时要将电话号码的前面补0以凑足12位。假设电话号码是13501237654,转换成6字节BCD码后变为01H,35H,01H,23H,76H,54H。
将电话号码转换成数据包中BCD码的格式的步骤就是:
1. 在电话号码的左边补一个“0”
2. 从左向右每两位分成一组
3. 分别将各组转换成BCD码。如果要将数据包中的数据还原成电话号码,步骤正好相反。
数据长度:所要传输的数据长度,2 字节。SM10 模块规定每次数据传输的数据长度不大于 140 字节,若数据长度超过这个阈值,则本次传输失败,模块不发送数据。例如本次传输数据的长度为 100 字节,则表示为00H 64H。接收数据时长度为:接收的数据+6 字节的时间。
数据:所要传输的数据
时间:只有在接收数据时有效,6 字节。表示该信息发送的时间,包括年月日时分秒。例如该信息是在 2008 年 4月 15 日 10 点 30 分 25 秒从 GSM 网络发送到 G200 模块,则接收数据的格式为 08H 04H 15H 10H 30H 25H。
例:上位机 1对应的SM10模块使用的SIM卡号为15810832810,上位机2对应的SM10模块SIM卡号为15810832812,在格式传输模式下,若上位机 1 发送信息“12345”给上位机 2(其中 12345 的格式为汉字)。
上位机 1(对应模块 SIM 卡号为 15810832810)发送数据的格式如下:
D7H | 01H | 01H58H10H83H28H12H | 00H0AH | 00H31H 00H32H 00H33H 00H34H 00H35H
其中 01H58H10H83H28H12H 为目的模块对应的 SIM 卡号。
00H31H 00H32H 00H33H 00H34H 00H35H 为发送的数据“12345”对应的双字节 UNICODE 码。
上位机 2(对应模块的 SIM 卡号为 15810832812)接收数据的格式如下:
D7H | 01H | 01H58H10H83H28H12H | 00H10H | 00H31H 00H32H 00H33H 00H34H 00H35H 08H04H15H10H30H25H 其中 01H58H10H83H28H10H 为源模块对应的 SIM 卡号, 08H04H15H10H30H25H 表示发送短信的时间为 2008年 4 月 15 日 10 点 30 分 25 秒。
2、格式2--ASCII形式的收发短信
这种格式适用与模块与手机以字符的形式发送数据(如在一个纯英语的环境)
当模块给手机发送短信时,格式1是将汉字和字符(如:a、b、c等)都以汉字的格式发送,每个汉字和字符都占用两个字节,一条给手机的短信只能发送70个汉字和字符的混合信息,而以ASCII的形式发送时每个字符只占用一个字节,一条短信能够发送140个字符。
这里所说的一条短信是指一个短信的计费单位,因为现在的手机都支持多条短信连发和连收。
格式二和格式一的不同点是字头的不同,格式一的字头是D7H,格式二的字头是D8H。见下图。
3.透明传输方式
透明传输方式下设置参数时需要设置接收方号码一栏,设置时模块将接收方号码保存在 EEROM 中,当模块在上电后没有收到短信时就要发送短信,发送短信的目的号码就是接收方电话号码。在透明传输中目的站点的编号是隐含的,隐含的方式是隐含在接收到的数据中,收到数据后就将收到数据的源站点号设为下次发送数据的目的站点。SM10的这一功能为分站在透明传输模式下被多个主站访问提供了方便,也为不能改变数据传输格式的从设备应用 GSM 模块提供了可能性。
透明传输数据时的注意事项:
①每次发送的数据长度最多为 134 个字节。若发送数据的长度大于 134,模块不发送数据。
②模块在接收串口数据的时候,在 6 个字节的时间内没有收到数据,则认为此帧数据结束。所以用户在发送一组数据的时候,字节与字节之间的时间间隔不能超过 6 个字节的时间。
4.两种数据格式的混用及点对多点的组网
一般情况下监控系统是点对多点的模式,由于主设备需要访问不同的从设备,主设备发送数据的目的地址就
要不断的变化,而从设备发送数据的目的地址是固定的主设备的地址。因此,一般点对多点使用时可以使用下面的方法。将主站点的SM10型短信模块工作在有格式传输,分站的短信模块可工作在透明方式下。具体组网如下
例:主设备(卡号:13601361234,工作在有格式传输)发送4个字节数据12H34H56H78H给分站0 2 (卡号:13601361239工作在无格式传输)的从设备02,格式如下:
主设备发送数据格式 D7H│01H│01H36H01H36H12H34H(目的地址)│00H04(数据长度)│H12H34H56H78H(数据)
从设备收到数据格式 12H34H56H78H(数据)
从设备4个字节数据A1HA2HA3HA4H给主站00的主设备00,格式如下:
从设备发送的数据为 A1HA2HA3HA4H(数据)
主设备收到的数据为 D7H│01H│01H36H01H36H12H39H(源地址)│00H04(数据长度)│A1HA2HA3HA4H(数据)六字节发送时间:DATE
例:有一系统主设备使用计算机,从设备使用研华AMD4050开关量模块。主设备(卡号:13601361234,工作在格式传输模式)发送$02M<CR>,读分站02(卡号:13601361239)的ADM4050的模块名。$02M<CR>对应的数据为: 15H30H32H4DH0DH。分站02(工作在透明模式)的AMD4050收到这个命令后响应!024050<CR>,
!024050<CR>对应的数据为:21H30H32H34H30H35H30H0DH。发送及接收的格式如下:
主设备发送$02M<CR> 格式:
D7H│01H│01H36H01H36H12H34H(目的地址)│0CH(数据长度)│15H30H32H4DH0DH(数据)
从设备收到$02M<CR> 格式: 15H30H32H4DH0DH(数据)
ADM4050响应时的数据格式如下:
从设备发送的数据为!024050<CR> 格式: 21H30H32H34H30H35H30H0DH(数据)
主设备收到的数据为
D7H│01H│01H36H01H36H12H39H(源地址)│0EH(数据长度)│21H30H32H34H30H35H30H0DH(数据)│六字节发送时间:DATE