Android之Bluetooth通信-BLE特征码

Bt特征码

    private static final UUID SERVICE_UUID                  = UUID.fromString("0000a601-0000-1000-8000-00805f9b34fb");
    private static final UUID WRITE_UUID                    = UUID.fromString("0000a611-0000-1000-8000-00805f9b34fb");
    private static final UUID READ_UUID                     = UUID.fromString("0000a621-0000-1000-8000-00805f9b34fb");

消息协议
通信协议消息格式分为起始标志位、消息头、消息体、校验位、结束标志位五部分。

header 1 header 2 header3
row 1 col 1 row 1 col 2
row 2 col 1 row 2 col 2
1)  起始标志位:标志整个协议数据的开始。本协议规定使用0xFD作为协议起始标志位;
2)  消息头:消息头固定4个字节,包括应答码、消息类型、消息体长度;
3)  消息体:实际传输的有效消息内容;
4)  校验位:为了校验数据完整性和有效性,校验单元不包括起始标志位,仅校验消息头和消息体,本协议规定校验单元使用CRC16;(代码见附录)
5)  结束标志位:标志整个协议数据的结束。本协议规定使用0xFD作为协议结束标志位。
6)  控制数据包中除了起始标志位和结束标志位外,凡是出现0xFD必须进行转义,0xFD转义为0x5DF7,0x5D转义为0x5DE7。
备注:使用起始标志位和结束标志位的原因。
    网络传输过程中,可能因为某些因素的影响,协议数据间可能会出现,连包,分包。为了方便处理连包或者分包数据,本协议使用起始标志和结束标志来处理这些异常现象,确保每一帧(每一包)数据均能正常发送到服务器并且被正确解析,同时保证数据的完整性。
    转义:从起始标志位到结束标识位之间的所有数据均需要做转义处理,以保证任何有效数据包仅起始标志位和结束标识位为0XFD。具体转义方法:
    所有0XFD ->  0x5D  0XF7;
    所有0X5D ->  0x5D  0XE7;
    转义顺序:发送:先校验后转义。(向外发)
              接收:先转义后校验。(接收数据)

你可能感兴趣的:(Android之Bluetooth通信-BLE特征码)