1.设计合理简捷,结构清晰。
2.各功能程序步骤分块再综合完成。这样能够方便功能测试,同时也可以方便随时修改。
3.由于搜索是比较消耗资源的动作,所以发现目标设备以后一定要及时关闭搜索,以节省系统消耗,并且小程序调试占用CPU较大,多次调试还及其容易导致电脑卡机,假如是安卓手机系统,我们又正好知道mac地址的话,可以直接跳过搜索过程进行直接连接,如果是不知道mac地址或者是IOS情况,则需要手动启动搜索,因此我们必须要认真仔细编写代码,调试的时候要有耐心。
4.需要有状态反应,当我们有执行某一项功能的时候,要能够直观的反应出来,这样我们才知道双方交互有没有成功,不仅可以方便使用者,还能方便后期的检测和调试,同时方便观察和检验程序实现状态。
(二)主程序接口协议
1.小程序的密钥
一般来说,商业性的项目都必须经过加密组成:随机数、KEY。
加密过程:
1、产生随机数NUM
2、产生随机数变种NUM_1=NUM+0x32
3、把NUM_1填充到数据的第1字节
4、用NUM分别异或(^)NUM之后,CRC之前的明文数据并把结果对应回填
5、把CRC之前数据做CRC16校验,校验值填到CRC位置。
例->开锁指令(随机数是0x88;KEY是0x66,uid是0x01)红色为CRC值
明文 0xFE,0x88,0x66,0x21,0x04,0x00,0x00,0x00,0x01
密文 0xFE,0xBA,0xEE,0xA9,0x8C,0x88,0x88,0x88,0x89,0x5B,0xC2
(三)与设备的蓝牙通信
1.通信流程概述
(1)客户端搜索车锁的蓝牙模块并建立蓝牙连接;
(2)客户端向车锁发指令获取通信密钥(密钥为长度一个字节的随机数)。注:每建立一次连接都要重新获取密钥;获取密钥时需提供8字节长度的设备识别码,设备识别码为:OLP1lFR9
(3)使用密钥与车锁进行通信;
(4)通信完成后客户端主动关闭本次蓝牙连接。
(5)说明:如果客户端不主动关闭连接,以后再次建立连接时,会收到来自车锁的重复通知,重复通知次数与连接建立次数相同
2.蓝牙开锁与上锁
1)开锁过程
客户端向车锁发开锁指令;设备执行开锁动作后,向客户端返回锁状态(不论开锁成功与否都会返回);客户端收到车锁返回的锁状态指令后,回复车锁,同时通知API服务器更新数据库的锁状态;注:如果客户端没有回复车锁,则车锁在等待5s后通过GPRS通路更新数据库;若收到客户端的回复则省略此步骤。
客户端将蓝牙连接关闭。(当锁舌处于锁销的挡槽内时,曲柄构件的凸柄在驱动孔内的非挡块处待机;在准备开锁时,曲柄构件的凸柄在驱动孔内旋转至挡块位置时被挡块阻挡,凸柄顶着挡块继续旋转,从而带动锁舌向移出挡槽的方向移动,此时对锁舌赋予进入锁销挡槽的力的弹簧被压缩;当凸柄继续旋转进而越过了挡块的阻挡时,锁销失去了向移出挡槽的方向移动的力,从而在弹簧赋予的力的作用下向进入锁销的挡槽的方向移动,直至抵接于锁销,此时锁销已在拉簣的作用下变位到开锁状态,挡槽已移动到不与锁舌对应的位置,故锁销将抵接于锁销的非挡槽部位,此时,曲柄构件的凸柄转回第一位置待机。)
2)闭锁过程
车锁检测到上锁动作后,向客户端返回锁状态(不论上锁成功与否都会返回);客户端收到车锁返回的锁状态指令后,回复车锁,同时通知API服务器更新数据库的锁状态。(当锁销被向闭锁方向拉动,挡槽随着锁销的移动而又移动至与锁舌对应的位置时,锁舌在弹簧的推力下进入挡槽,卡定锁销的移动,从而完成闭锁。)
物联网应用客户端小程序设计(二)由毕业论文网(www.huoyuandh.com)会员上传。