configmac_desdoc(智能配药机设计文档)

嵌入式设备与服务器后台通信说明

嵌入式设备通过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 正确返回

01设备注册

描述:通过设备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

2更新密码

描述:通过设备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

3更新配药机状态

描述:通过设备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

1E小程序通过服务器后台控制嵌入式设备进行药瓶添加操作

流程:
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

1F小程序通过服务器后台控制嵌入式设备进行药瓶删除操作

流程:
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

20小程序通过服务器后台控制嵌入式设备进行配药操作

流程:
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