我正在查看名为MyTracks的项目代码:
现在我遇到方法isValid(byte[] buffer)
的问题。我不明白他在这里检查到底是什么。我们想知道数组中的第一个字节是否是包含0xFE的头。我不太明白以下几点:
boolean goodHdr = ((buffer[0] & 0xFF) == 0xFE);
boolean goodChk = ((buffer[2] & 0xFF) == (0xFF - (buffer[1] & 0xFF)));
return goodHdr && goodChk;
任何想法?
答案 0 :(得分:1)
Ewoks是正确的,请参阅此博文:
http://ww.telent.net/2012/5/3/listening_to_a_polar_bluetooth_hrm_in_linux
"深入研究src / com / google / android / apps / mytracks / services / sensors / PolarMessageParser.java我们发现了一条有用的评论,尽管Polar在发布开发信息方面表现得非常荒谬(他们不是,总结)Wearlink数据包格式实际上非常简单。
Polar Bluetooth Wearlink数据包示例
Hdr - Len - Chk - Seq - 状态 - HeartRate - RRInterval_16位
FE - 08 - F7 - 06 - F1 - 48 - 03 64
,其中
答案 1 :(得分:0)
& 0xff只是将带符号的字节转换为unsigned int以进行比较
答案 2 :(得分:0)
第一行是检查接收缓冲区是否以0xFE开头,因为它应该是这个Polar Wearable。
第二行是检查长度字节是否正确,因为它的规格值是255,写入的值是大小字节..
这一起是超级简单的验证,消息是正确的(更复杂的实现将包括CRC或其他验证方法)。欢呼声