现用神州大众卡:
PUK码:54875841
用户密码:32593207
号码:13725323851
短消息通道通讯协议
一.编码方式要求:
1.短消息编码方式:PDU模式。
2.指令由ASCII字符组成,必须以7bit 方式编码。
二.步聚
短信操作步骤及相关命令:
(1)设置短信格式——AT+CMGF
(2)设置短信存储载体——AT+CPMS
(3)设置短信接收提示方式——AT+CNMI
(4)发送短信——AT+CMGS
(5) 显示短信——AT+CMGL
1.用AT命令设置方式0(PDU模式)
命令格式:AT+CMGF=0
命令返回:OK
ERROR
2.用AT命令设置短信存储载体
命令格式:AT+CPMS=”SM”
命令返回:+CPMS: 8,15,8,15,1,40
OK
设置成功,并显示状态:SM(SIM卡)存储器总容量为15,当前
存储量8;ME(模块)存储器总容量为40,当前存储量1;mem1定义
为SM;
3.设置短信接收提示方式
命令格式:AT+CNMI=[[,[,[,]]]]
命令返回:OK
ERROR
测试结果:AT+CNMI=3,2
OK
如果有新的短消息来到,则gr47将自动返回下列提示:
+CMTI: “SM”,
此时读出,然后用“AT+CMGR”指令即可读出短消息内容。
4.发送短信
命令格式:AT+CMGS=[,]
Text is entered
命令返回:+CMGS:[,]
+CMS ERROR:
OK
ERROR
(1).发送数据编码一般格式为:
[信息服务中心地址信息的长度(字节)] [服务中心地址(smsc)] [基本参数(TP-MTI/VFP)] [消息基准值(TP-MR)] [目标地址数字个数(十进制个数)] [目标地址格式(TON/NPI)] [目标地址(TP-DA)] [协议标识(TP-PID)] [用户信息编码方式(TP-DCS)]
[有效期(TP-VP)] [用户信息长度(TP-UDL)] [用户信息(TP-UD)]
例:08 91 683108100005F0 31 00 0D 91 683125503956F9 00 08 C2 06 60A8597DFF01
参照规范,具体分析各分段含义解释说明:(表一发送PDU 串的编制分析)
08 SMSC 地址信息的长度共8 个八位字节(包括91)
91 SMSC 地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
91—短信息中心号码类型。91是TON/NPI遵守International/E.164标准,指在
号码前需加‘+’号;此外还有其它数值,但91最常用。
91— 1 0 0 1 0 0 0 1
BIT No. 7 6 5 4 3 2 1 0
Name 1 数值类型 号码鉴别
数值类型(Type of Number):000—未知,001—国际,010—国内,111—留作扩展;
号码鉴别(Numbering plan identification):0000—未知,0001—ISDN/电话号
码(E.164/E.163),1111—留作扩展;68 31 08 10 00 05 F0 SMSC 地址
8613800100500,补‘F’凑成偶数个
31 基本参数(TP-MTI/VFP)---文件头字节
31 要求发送回复状态报告
11 不需
11&h= 0 0 0 1 0 0 0 1 &b
BIT No. 7 6 5 4 3 2 1 0
Name TP-RP TP-UDHI TP-SPR TP-VFP TP-RD TP-MTI
Value 0 0 0 1 0 0 0 1
应答路径—TP-RP(TP-Reply-Path):
0—不设置;
1—设置
用户数据头标识—TP-UDHL(TP-User-Data-Header-Indicator):
0—不含任何头信息;
1—含头信息
状态报告要求—TP-SPR(TP-Status-Report-Request):
0—需要报告;
1—不需要报告
有效期格式—TP-VPF(TP-Validity-Period-Format):
00—不提供(Not present);
10—整型(标准);
01—预留;
11—提供8位字节的一半(Semi-Octet Represented)
拒绝复制—TP-RD(TP-Reject-Duplicates):
0—接受复制;
1—拒绝复制
信息类型提示—TP-MTI(TP-Message-Type-Indicator):
00—读出(Deliver);
01—提交(Submit)
00 消息基准值(TP-MR) 0
永远为00 --- 分割符
0D 目标地址数字个数共13 个十进制数
91 目标地址格式(TON/NPI)
A1:国内格式(- 1ah)
91:国际格式(+ 19h)
81:未知,+86 可带可不带。
68 31 25 50 39 56 F9 目标地址(TP-DA) 8613520593659,补‘F’凑成偶数个
00 协议标识(TP-PID)(TP-Protocol-Identifier)
一般为00--- 普通GSM 类型,点到点方式
BIT No. 7 6 5 4 3 2 1 0
Bit No.7与Bit No.6:00—如下面定义的分配Bit No.0—Bit No.5;
01—参见GSM03.40协议标识完全定义;
10—预留;
11—为服务中心SC)特殊用途分配Bit No.0—Bit No.5。
一般将这两位置为00。
Bit No.5:0—不使用远程网络,只是短消息设备之间的协议;
1—使用远程网络。
Bit No.4—Bits No.0:00000—隐含;
00001—电传;
00010—group 3 telefax;
00100—语音;
00101—欧洲无线信息系统(ERMES);
00110—国内系统;
10001—任何基于X.400的公用信息处理系统;
10010—Email。
08 用户信息编码方式(TP-DCS)(TP-Data-Coding-Scheme)
00:表示7-bit 编码,
08:表示UCS2 编码,
04:表示8-bit 编码。
BIT No. 7 6 5 4 3 2 1 0
Bit No.7与Bit No.6 :一般设置为00;
Bit No.5:0—文本未压缩,
1—文本用GSM标准压缩算法压缩;
Bit No.4:0—表示Bit No.1、Bit No.0为保留位,不含信息类型信息,
1—表示Bit No.1、Bit No.0含有信息类型信息;
Bit No.3与Bit No.2:00—默认的字母表,
01—8bit,
10—USC2(16bit),
11—预留;
Bit No.1与Bit No.0:00—Class 0,
01—Class 1,
10—Class 2(SIM卡特定信息),
11—Class 3。
C2 有效期(TP-VP) 5 分钟
VP value(&h) 相应的有效期
00 to 8F (VP+1)*5 分钟
90 to A7 12小时+(VP-143)*30分钟
A8 to C4 (VP-166)*1天
C5 to FF (VP-192)*1 周
06 用户信息长度(TP-UDL)(TP-User-Data-Length) 实际长度6个字节
60 A8 59 7D FF 01 用户信息(TP-UD)(TP-User-Data) “您好!”
这里需要注意的几点:
①.比较SMSC 地址分段:68 31 08 10 00 05 F0 与真实SMSC 地址8613800100500F(为
了凑足14 位,在末尾补F),不难发现只需将前者奇偶位对调即可得到后者。同样,目标地址分段68 31 25 50 39 56 F9 与实际目标地址13520593659F 之间的关系也是如此。
②.若“SMSC 地址信息的长度”分段的值为00,则意味着SMSC 地址字符串的长度为零,
PDU 串的“SMSC 地址格式”段和“SMSC 地址”段将省去。且将使用SIM 卡设置的SMSC 地址。
上例中的PDU 串变为:
00 31 00 0D 91 683125503956F9 00 08 C2 06 60A8597DFF01
③.对于用户信息长度,可通过VB 中的Len 函数求得,如“您好!”,用Len(“您好!”)
得到是3,那么3*2=6 即为用户信息长度06(这里要转换为16 进制,并且是两位)。
④.用户信息(TP-UD)段最大容量是140 字节,所以在UCS2 编码方式下,可发送短消息
的最大字符数是70 个。
[SCA]:服务中心地址, 广州为:91683108200005F0(每字节的高低半字节反转)
可以用AT指令先设置服务中心地址:AT+CSCA=”+8613800200500”
(2).发送数据部分需用7Bit编码
例如发送"hellohello"包含了10个字符,他们必须一个个将用7-bits来代表。
h(68h) e(65h) l(6ch) l(6ch) o(6fh) h(68h) e(65h) l(6ch) l(6ch) o(6fh)
104 101 108 108 111 104 101 108 108 111
1101000 1100101 1101100 1101100 1101111 1101000 1100101 1101100 1101100 1101111
首先将字符转换为7位的二进制,然后,将后面字符的位调用到前面,补齐前面的差
别。例如:h翻译成1101000,e翻译成1100101,显然h的二进制编码不足八位,那么就将
e的最后一位(最低位)补足到h的前面(第7位)。那么就成了11101000(E8)。剩余地编码
看下表:
1 1101000
00 110010
100 11011
1111 1101
01000 110
100101 11
1101100 1
1 1101100
110111
E8 32 9B FD 46 97 D9 EC 37
那么这10个字符就变成了9个八进制数 E8 32 9B FD 46 97 D9 EC 37。
5.显示短信
三.实际步聚
1.短信操作步骤及相关命令:
(1) 设置短信格式——AT+CMGF=0
(2) 设置短信存储载体——AT+CPMS="sm","sm"
(3) 设置短信接收提示方式——AT+CNMI=3,2
(4) 发送短信——AT+CMGS=
(5) 显示短信——AT+CMGL
根据现在实标情况发送信息前段部分应为:
08 91 683108200005F0 11 00 0D 91 683125503956F9 00 00 60
08 SMSC 地址信息的长度共8 个八位字节(包括91)
91 683108200005F0 服务中心地址(smsc) +8613800200500
11 不要求发送回复状态报告
00 消息基准值(TP-MR) 永远为00 --- 分割符
0d 目标地址数字个数共13 个十进制数
91 683125503956F9 目标地址(目的号码待定)
00 协议标识(TP-PID)一般为00--- 普通GSM 类型,点到点方式
00 用户信息编码方式(TP-DCS) 00:表示7-bit 编码,
60 有效期(TP-VP) 5 分钟 00 to 8F (VP+1)*5 分钟
把以上数据填入ff_buf[]
ff_buf[]={ //共22字节
0x08,0x91,0x68,0x31,0x08,0x20,0x00,0x05,0xf0,0x11,0x00,0x0d,
0x68,0x31,0x25,0x50,0x39,0x56,0xf9, //本部分目的号码待定
0x00,0x00,0x60
};
2.对发送数据进行移位处理,并计算出其长度:
(1) 按本系统短消息通道通讯协议要求,发送之数据为:
一般信息(ASCII字符,7bit 方式编码):
*XX,YYYYYYYYYY,V1,HHMMSS,S,latitude,D,longitude,G,speed,direction,DDMMYY,
vehicle_status#
确认信息:
*XX,YYYYYYYYYY,V4,CMD,hhmmss,HHMMSS,S,latitude,D,longitude,G,speed,direction,
DDMMYY,vehicle_status#
其中:V1 一般信息
V4 确认信息
* 命令头
XX制造商名称,如:TH、DC、XY等。(暂定为:WL)
, 分隔符
YYYYYYYYYY车载机序列号(10位)。 (暂定为:an12345678)
CMD被确认的中心命令。
hhmmss被确认命令中的时间值
HHMMSS车载机时间,标准时间,与北京时间有8小时时差。
S:数据有效位(A/V),
A 表示GPS数据是有效定位数据,
V 表示GPS数据是无效定位数据。
latitude:纬度,格式DDFF.FFFF,
DD:纬度的度(00 ~ 90),
FF.FFFF:纬度的分(00.0000 ~ 59.9999),保留四位小数。
D:纬度标志(N:北纬,S:南纬)。
longitude:经度,格式DDDFF.FFFF,
DDD:经度的度(000 ~ 180),
FF.FFFF:经度的分(00.0000 ~ 59.9999),保留四位小数。
G:经度标志(E:东经,W:西经)。
speed:速度,范围000.00 ~ 999.99 节,保留两位小数。
该信息字段可能为空即longitude,G,,direction,,表示速度为0。
direction:方位角,正北为0度,分辨率1度,顺时针方向。
该信息字段可能为空如longitude,G,speed,, MMDDYY,,表示角度为0。
DDMMYY:日/月/年
vehicle_status:车辆状态,共四字节,表示车载机部件状态、车辆部件状态以及报警状态等。
用ASCII字符表示16进制值,下面是该变量中各字节的每一位的具体含义,
bit表示采用负逻辑,即bit=0有效。如下表所示:
位序 保留 车载机部件状态 车辆部件状态 报警状态
第一字节 第二字节 第三字节 第四字节
0 0 盗警 0 GPS接收机故障 0 车门开 0 盗警
1 0 密码错误报警 0 保留 0 车辆设防 0 劫警
2 0 劫警(紧急按钮)0 保留 0 ACC关 0 超速报警
3 1 保留 0 主机掉电由后备电池供电 0 电池电压过低 0 非法点火报警
4 0 电瓶拆除报警 1 保留 0 电池坏 1 保留
5 1 保留 1 保留 0 发动机 1 保留
6 1 保留 1 保留 1 保留 1 保留
7 1 不用 1 不用 1 不用 1 不用
车载机返回GPS信息(包括HHMMSS、S、latitude、D、longitude、G、speed、direction、DDMMYY)模式:
1、 有效信息模式:
该模式下车载机只返回最近的有效的GPS信息(数据有效位为“A”):若GPS定位数据有效位为“V”
则直接丢弃,车载机返回上次有效数据(GPS信息被冻结)。
软件版本号为2.20以下的安防型车载机不支持有效信息模式,物流调度型车载机不支持有效信息模式。
2、 最新信息模式:
该模式下车载机始终返回最新的GPS信息而不论数据有效位为“A”或“V”,若车载机处于省电模式
则返回GPS断电前最后一次数据。
车载机第一次收到有效定位信息前(刚加电时)将自动工作于最新信息模式。
把要发送的信息(均为7bit ASCII字符)放入f_buf[],其结束符为"#",编程对其进行移位(依次用后字节
之低位填入本字节之剩余高位),同时计算出其字节数n_len,存入ff_buf[22],移位之数据放入ff_buf[23]开
始之存储单元.
用AT+CMGS=发送命令发送ff_buf[]内容(以0x0d,0x0f结束).(是否要加双引号?)