⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 发送及接收短信方案.txt

📁 短信PDU的编码(代码)呵呵
💻 TXT
字号:
现用神州大众卡:
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=[<mode>[,<mt>[,<bm>[,<ds>]]]]
命令返回:OK
          ERROR
测试结果:AT+CNMI=3,2
          OK
如果有新的短消息来到,则gr47将自动返回下列提示: 
+CMTI: “SM”, <index> 
此时读出<index>,然后用“AT+CMGR”指令即可读出短消息内容。 

4.发送短信
命令格式:AT+CMGS=<da>[,<toda>]<CR>
          Text is entered<ctrl-z/ESC>
命令返回:+CMGS:<mr>[,<scts>]
          +CMS ERROR:<err>
          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结束).(是否要加双引号?)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -