嵌入式设备通过tcp连接,实现与服务器后台之间通信,小程序通过http协议与嵌入式设备之间实现通信。
下面记录嵌入式设备通信API格式:
整个协议帧包含
数据头(2Byte) 设备唯一标志码PID(8Byte) 协议类型(1Byte) 数据帧长度(1Byte) 数据帧(xxByte) CRC校验(2Byte) 数据尾(2Byte)
控制命令帧数据帧格式为
控制命令(1Byte)控制命令参数个数(1Byte)参数类型0(1Byte)参数值0(nByte)参数类型1(1Byte)参数值1(nByte)……
控制命令对应如下:(hex)控制命令描述
01 设备注册
02 更新密码
03 更新设备状态
1E 添加药瓶
1F 删除药瓶
20 开始配药
错误码类型如下:
07 长度错误
06 数据头尾校验错误
05 数据CRC校验错误
04 协议帧类型错误
03 数据dat转换错误
00 正确返回
描述:通过设备MAC地址及密码向服务器端注册设备,换取设备唯一标志码PID。
参数总数:6
参数1:产品系列编码 参数类型 10 参数位数1Byte
参数2:产品类型编码 参数类型 11 参数位数1Byte
参数3:产品批次编码 参数类型 12 参数位数1Byte
参数4:配药机可操作药瓶总数 参数类型 15 参数位数1Byte
参数5:设备MAC地址 参数类型 C0 参数位数8Byte
参数6:设备初始密码 参数地址 C1 参数位数8Byte
成功返回:
参数1:返回错误码 参数类型 00 参数位数1Byte
参数2:返回注册成功PID 参数类型 C2 参数位数8Byte
错误返回:
参数1:返回错误码 参数类型 00 参数位数1Byte
示例请求:
FFFE
0000000000000000 -》设备ID注册时ID为全0
A3 -》帧类型嵌入式设备请求控制帧
1C -》数据总数
01 -》控制命令编码 01 为设备注册
06 -》控制命令参数个数 为6个参数个数
10 -》产品系列编码
0B -》0B为配药机系列
11 -》产品类型编码
01 -》01为配药机产品类型
12 -》产品批次编码
00 -》产品批次为00
15 -》设备单元总数编码
07 -》有七个设备单元
C0 -》设备MAC地址编码
0000000000000000
C1 -》设备Pass地址编码
0000000000000000
AA25
FFFD
成功返回:
FFFE
0000000000000000
23-》帧类型
0D-》数据总数
01-》控制命令编码01为设备注册
02-》返回参数个数02
00-》返回错误码
00-》0为无错误
C2-》返回pid
0B01000000000585
8C04
FFFD
错误返回
FFFE
0000000000000000
20-》帧类型
02-》数据总数
00-》返回错误码类型
05-》返回错误码值
010E
FFFD
描述:通过设备PID修改服务器端设备的操作密码。
参数总数:1
参数1:设备密码 参数类型 C1 参数位数8Byte
成功返回:
参数1:返回错误码 参数类型 00 参数位数1Byte
参数2:返回更新后的密码 参数类型 C1 参数位数8Byte
错误返回:
参数1:返回错误码 参数类型 00 参数位数1Byte
发送示例:
FFFE
0B01000000000585 =》设备PID
A3 =》协议类型
0D =》数据包数据总数
02 =》控制命令更新密码
01 =》控制命令参数个数
C1 =》参数密码值类型
0000000000000002 =》参数密码
D355 =》校验
FFFD
描述:通过设备PID修改服务器端设备的工作状态。
参数总数:1
参数1:设备状态 参数类型 13 参数位数1Byte
成功返回:
参数1:返回错误码 参数类型 00 参数位数1Byte
参数2:返回设备状态 参数类型 13 参数位数1Byte
错误返回:
参数1:返回错误码 参数类型 00 参数位数1Byte
发送示例:
FFFE
0B01000000000585=》设备PID
A3=》设备协议类型
04=》数据包数据总数
03=》控制命令更新配药机状态
01=》控制命令参数个数
13=》设备状态参数类型
02=》设备正忙值
9A83
FFFD
返回示例:
FFFE
0B01000000000585=》设备PID
23=》设备协议类型
06=》数据包数据总数
03=》控制命令更新配药机状态
02=》返回参数个数2
00=》返回错误码类型
00=》返回错误码值
13=》返回设备状态类型
02=》返回设备状态值
4EA7
FFFD
流程:
1.小程序http请求到服务器后台执行添加药瓶操作,
2.服务器后台通过当前在线设备转发药瓶添加操作,
3.嵌入式设备接收到添加药瓶操作后,执行添加药瓶操作,
4.嵌入式设备执行完成添加药瓶操作后,返回操作响应给服务器后台,
5.服务器后台接收到返回响应后,更新药瓶数据库,药瓶添加完成。
- 小程序向服务器发送添加药瓶操作示例
{"server":"Wxminserver","action":"addyaoping","data":{"pid":"0B01000000000585","openid":"li3007liuu","unitn":2,"ypnum":"200236473"}} - 服务器向设备发送添加药瓶操作命令
描述:通过设备PID向指定设备发送添加药瓶操作
参数总数:2
参数1:操作用户 参数类型 60 参数位数4Byte
参数2:操作的配药机的单元号 参数类型 6269 对应配药机单元07号 参数位数4Byte
若用户将ID为00000001的瓶添加至单元0则此次参数2为6200000001
示例:用户编号为00000001,对配药机单元1添加药瓶编号为000186A1命令如下
FFFE
0B01000000000585
43=》协议帧类型
0C=》数据包总数
1E=》添加药瓶操作
02=》传递参数2
60=》操作用户类型
00000001=》操作用户编号
64=》需要添加的单元地址
000186A1=》需要添加的药瓶编号
0915
FFFD - 添加药瓶结束后,设备向服务器返回响应
参数总数:3
参数1:操作状态码 参数类型00 参数位数1Byte
参数2:操作用户 参数类型 60 参数位数4Byte
参数3:操作的配药机的单元号 参数类型 6269 对应配药机单元07号 参数位数4Byte
若用户将ID为00000001的瓶添加至单元0则此次参数2为6200000001
FFFE
0B01000000000585
A3=》协议类型
0E=》数据包总数
1E=》添加药瓶操作
03=》返回参数总数
00=》错误状态类型
00=》错误状态码
60=》操作用户
00000001
64=》配药机单元及药瓶编号
000186A1
E5FA
FFFD
流程:
1.小程序http请求到服务器后台执行删除药瓶操作,
2.服务器后台通过当前在线设备转发药瓶删除操作,
3.嵌入式设备接收到删除药瓶操作后,执行删除药瓶操作,
4.嵌入式设备执行完成删除药瓶操作后,返回操作响应给服务器后台,
5.服务器后台接收到返回响应后,更新药瓶数据库,药瓶删除完成。
- 小程序向服务器发送删除药瓶操作示例
{"server":"Wxminserver","action":"deleteyaoping","data":{"pid":"0B01000000000190","openid":"li3007liuu","unitn":2}} - 服务器向设备发送删除药瓶操作命令
描述:通过设备PID向指定设备发送删除药瓶操作
参数总数:2
参数1:操作用户 参数类型 60 参数位数4Byte
参数2:操作的配药机的单元号 参数类型 6269 对应配药机单元07号 参数位数4Byte
示例:用户编号为00000001,对配药机单元1删除药瓶命令如下
FFFE
0B01000000000585
43=》协议帧类型
0C=》数据包总数
1F=》添加药瓶操作
02=》传递参数2
60=》操作用户类型
00000001=》操作用户编号
64=》需要删除的单元地址
00000000
0915
FFFD - 药瓶删除结束后,设备向服务器返回响应
参数总数:3
参数1:操作状态码 参数类型00 参数位数1Byte
参数2:操作用户 参数类型 60 参数位数4Byte
参数3:操作的配药机的单元号 参数类型 6269 对应配药机单元07号 参数位数4Byte
FFFE
0B01000000000585
A3=》协议类型
0E=》数据包总数
1F=》删除药瓶操作
03=》返回参数总数
00=》错误状态类型
00=》错误状态码
60=》操作用户
00000001
64=》配药机单元号地址
00000000
E5FA
FFFD
流程:
1.小程序http请求到服务器后台执行配药操作,
2.服务器后台通过当前在线设备转发配药操作,
3.嵌入式设备接收到配药操作后,执行配药操作,
4.嵌入式设备执行完成配药操作后,返回操作响应给服务器后台,
5.服务器后台接收到返回响应后,更新药瓶数据库,配药完成。
- 小程序向服务器发送配药操作示例
{"server":"Wxminserver","action":"startconfig","data":{"pid":"0B01000000000108","openid":"li3007liuu","yaoftbid":0,"cfgallcap":1500,"decarr":[{"index":0,"dcap":300,"ypid":1},{"index":1,"dcap":400,"ypid":2}]}}
用户控制配药机在单元0流出300mL、单元1流出400mL值 - 服务器向设备发送配药操作命令
描述:通过设备PID向指定设备发送配药操作
操作示例: FFFE
0B01000000000585
43=》协议帧类型
21
20
07
60=》操作用户
00000001
7F=》配药总量
000005DC
7E=》配药药方ID
00000000
40=》单元0配药总量
012C
62=》单元0药瓶ID
00000001
41=》单元1配药总量
01 90
63=》单元1药瓶ID
00 00 00 02
18 DA
FF FD - 配药结束后,设备向服务器返回响应
返回示例: FFFE
0B01000000000585
A3=》协议类型
21
20=》配药操作
08=》参数个数
00=》错误码
00
60=》操作用户
00000001
7F=》配药总量
000005DC
7E=》配药药方ID
00000000
40=》单元0配药总量
012C
62=》单元0药瓶ID
00000001
41=》单元1配药总量
01 90
63=》单元1药瓶ID
00000002
5F=》配药总时间
00000300
18DA
FFFD