Hex:[0A][52][08][01][01][01][00][CD][21][02][59]
0 [0A]
1 [52] Packettype = TEMP_HUM
2 [08] subtype = TH8 -
3 [01] Sequence nbr = 1
4/5 [01][01] ID = 257
6/7 [00][CD] Temperature = 20.5 °C
8 [21] Humidity = 33
9 [02] Status = Dry
10 [5] *nibble Signal level = 5
11 [9] *nibble Battery = OK
したがって、シリアル ポート経由で 11 バイト (16 進数) を取得します。後で使用できるように、すべてのバイトをバイト配列に割り当てました。
2 つの質問があります。
1] Java で 4 バイトと 5 バイトを結合するにはどうすればよいですか (INT であると想定しています)。2] 最後のバイトの 10 と 11 または High と Low ニブルをどのように抽出できますか?
[以下のコメントから] バイト例: High[0101][0110]Low lowNibble = yourbyte & 0x0f; 01010110 & 0x0f (00001111) = 00000110
highNibble = yourByte >>>> 4
01010110 >>> 4 = 00000101
IF you use this Example Byte: High[1101][0110]Low
highNibble = yourByte >>> 4
11010110 >>> 4 = 00000101
Because >>> removes the signed bit.