在R2000 RFID阅读器模块的配置中,我在上次已经取得了进步。现在我有一个新问题。如果要获取天线设置信息,请发送十六进制命令,模块将返回下一个信息:A5 5A 00 0A 2b 22 11 12 0D 0A其中数据22 11是DByte1 DByte0,表示选择了天线1、5、10和14。我不知道如何从22 11十六进制代码获取此信息。
DByte1(Hex 22)表示选择了天线10和14DByte0(十六进制16)表示选择了天线1和5
如何在Ruby中从Hex 11获取10,14的值和从Hex 22获得1.5的值?如果将天线14设置为十六进制20,该如何做反向操作?
提前感谢
这是一种简单的二进制格式。 0x2211
是一个16位整数,其中每个位代表一个天线:
format('%016b', 0x2211)
#=> "0010001000010001"
# ^ ^ ^ ^
# 14 10 5 1
因此要弄清楚是否设置了天线,只需检查相应的位是否设置为1
:
n = 0x2211
n[0] == 1 #=> true
n[1] == 1 #=> false
n[2] == 1 #=> false
n[3] == 1 #=> false
n[4] == 1 #=> true
请注意,索引是基于0的,即n[0]
是天线1。
如何在Ruby中从Hex 11获取10,14的值和从Hex 22获得1.5的值?
[您可以提取二进制digits
,将digits
数字与其从1开始的索引(each
)组合,each
那些设置为with_index
的位,然后通过with_index
提取其索引:] >
select
或使用位运算符
select
和1
:
map