将十六进制命令发送到R2000 RFID阅读器

问题描述 投票:-3回答:1

在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,该如何做反向操作?

提前感谢

arrays ruby byte
1个回答
0
投票

这是一种简单的二进制格式。 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

或使用位运算符select1

map
© www.soinside.com 2019 - 2024. All rights reserved.