mob41 / broadlink-java-api

A clean Broadlink API for Java
MIT License
22 stars 25 forks source link

getStates() not work #20

Open viegoooo opened 5 years ago

viegoooo commented 5 years ago

getRawPayloadBytesPadded()中 byte[] encData = subbytes(data, BLDevice.DEFAULT_BYTES_SIZE, data.length); 已经去掉了长度 DEFAULT_BYTES_SIZE = 0x38; // 56-bytes 的header ,然而在getStatesRaw() 中截取state时又算上了header的长度。 解决方法 : if (pl[0x3c] >= 48 && pl[0x3c] <= 57) { String decodeValue1; decodeValue1 = String.valueOf(pl[0x46]); state = Short.decode(decodeValue1).byteValue(); } else { state = pl[0x46]; }

0x3c 和0x46的地方的地方需要减去 DEFAULT_BYTES_SIZE = 0x38 的长度。 if (pl[0x4] >= 48 && pl[0x4] <= 57) { String decodeValue1; decodeValue1 = String.valueOf(pl[0xe]); state = Short.decode(decodeValue1).byteValue(); } else { state = pl[0xe]; }