android串口通信——电子锁
本文解决的问题
1.如何打开电子锁
2.如何判断电子锁是否关闭
一、锁孔板基础
锁孔板的图
锁孔板中主要说一哈图示中的1和2两个部分:
图中编号 | 说明 |
---|---|
1 | 拨码开关(设置板地址) |
2 | 锁的接口,这个是确定锁的地址的 |
1.拨码开关(设置板地址)
板地址的设置:拨码开关从 8 到 1 表示从高位到低位,拨到数字端为 1,另一端为 0。 00000001 表示板地址为 1,00000010 表示板地址为 2,00000011 表示板子地址为 3,依次类推。
3.锁地址
图中2的,每个接口都会有对应的编号,这个就做锁的编号。
那么我们想要操作一把锁,需要知道的是:板编号和锁编号。因为我们是可以接入多个板的。
例如:现在板的的编号是:00000001,锁的编号是 1 ,那么我们想要操作这个锁,就需要使用到 板1锁1来控制。
二、锁孔板的基本指令
1、板地址查询0x80:
命令头 板地址 状态 校验码 (异或)
0X80 0X01 0X00 0X99 0X18
返回:
命令头 固定 从机板地址 固定 校验位
0X80 0X01 0X01到0X40 0X99 XXXX
2、开锁命令如下0x8A:
命令 板地址 锁地址 状态 校验码 (异或)
0X8A 0X01-0XC8 0X01—18 0X11 xx
如:上位机发 0X8A 0X01 0X01 0X11 0X9B ( 16 进制), 1 秒后返回
命令 板地址 锁地址 状态 校验码
0X8A 0X01 0X01 0X11 0X9B (锁为开)
0X8A 0X01 0X01 0X00 0X8A (锁为关)
如:上位机发 0X8A 0X02 0X01 0X11 0X98 ( 16 进制),开从控制柜柜门, 1 秒后返回:
命令 板地址 锁地址 状态 校验码
0X8A 0X02 0X01 0X11 0X98 (锁为开)
0X8A 0X02 0X01 0X00 0X89 (锁为关)
3、读锁状态命令 0X80(门开关状态反馈):
起始 板地址 锁地址 命令 校验码 (异或)
0X80 0X01-0XC8 0X00—18 0X33 XX
如:上位机发 0X80 0X01 0X01 0X33 0XB3 ( 16 进制),返回
命令 板地址 锁地址 状态 校验码
0X80 0X01 0X01 0X11 0X91 (锁为开)
0X80 0X01 0X01 0X00 0X80 (锁为关)
如:上位机发 0X80 0X01 0X00 0X33 0XB2 ( 16 进制),返回
起始 板地址 状态 1 状态 2 状态 3 状态 4 命令 校验码
0X80 0X01 0XFF 0XFF 0XFF 0XFF 0X33 0XB2
状态:从状态 4 开始到状态 1 低位到高位对应的锁为 1—32.
如:上位机发 0X80 0X02 0X01 0X33 0XB0 ( 16 进制),读从控制柜柜门,返回
命令 板地址 锁地址 状态 校验码
0X80 0X02 0X01 0X11 0X92 (锁为开)
0X80 0X02 0X01 0X00