ACR122U LED控制
ACR122U LED controlling
有没有人知道如何通过Android上的方法Reader.control()
控制ACR122U的双色LED? (库 acssmc-1.1.3)。
我正在阅读 API 并且不知道命令描述的含义:
示例:
byte[] command = {(byte) 0xFF, (byte) 0x00, (byte) 0x40, (byte) 0b01110111, (byte) 0x04, (byte) 20, (byte) 30, (byte) 3, (byte) 2};
这些东西我不明白:
- 字节 3 (P2):我不知道如何设置它。
- 字节 5 (T1):从字节 3 以某种方式控制的第一个周期状态持续时间?
- 字节 6 (T2):从字节 3 以某种方式控制的第二个周期状态持续时间?
- 字节 7(重复次数):第 1 和第 2 循环状态重复的总次数?
一些解释性的例子会很棒。
改变 LED 状态的命令是
+------+------+------+------+------+------+------+------+------+
| CLA | INS | P1 | P2 | Lc | DATA |
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | SC | 0x04 | T1 | T2 | #R | 0x00 |
+------+------+------+------+------+------+------+------+------+
其中 SC 定义 LED 的状态(连续 on/off,闪烁),T1/T2 定义闪烁波形,#R 定义闪烁波形的重复次数。
因此,定义 LED 应该如何闪烁以及闪烁完成后它们应该如何显示的主要参数是 SC。这是一个8位的字段:
- 位 0:此标志定义闪烁完成后红色 LED 的状态(另见位 2)。
- 位 1:此标志定义闪烁完成后绿色 LED 的状态(另见位 3)。
- Bit 2: 仅当此标志被设置为 (1) 时,红色 LED 的状态将在闪烁完成后设置为 bit 0 的值。如果此标志被清除 (0),红色 LED 将 return 到您发出 LED 控制命令之前的状态。
- Bit 3: 仅当此标志被设置为 (1) 时,绿色 LED 的状态将在闪烁完成后设置为 bit 0 的值。如果此标志被清除 (0),绿色 LED 将 return 到您发出 LED 控制命令之前的状态。
- 第 4 位:此标志定义红色 LED 在开始执行 LED 控制命令时应设置的状态。
- 第 5 位:此标志定义绿色 LED 在开始执行 LED 控制命令时应设置的状态。
- 第 6 位:此标志定义是否应使用闪烁波形切换红色 LED。
- 第 7 位:此标志定义是否应使用闪烁波形切换绿色 LED。
因此,假设您设置了 SC 的第 4 位和第 6 位(并清除其余部分),即 SC = 0x50。此外,您设置 T1 = 5 (0x05)、T2 = 10 (0x0A) 和#R = 2 (0x02)。因此,您有以下命令:
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | 0x50 | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 |
+------+------+------+------+------+------+------+------+------+
然后绿色LED熄灭,红色LED闪烁两次,波形如下:
RED ON ----------\ /----------\
| | |
RED OFF \--------------------/ \--------------------
\________/ \__________________/ \________/ \__________________/
T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms
\_____________________________/ \_____________________________/
Repetition 1 Repetition 2
现在,假设您还想使绿色 LED 闪烁,但其初始状态设置为关闭(以便闪烁在红色和绿色之间切换,而不是红色和不亮)。因此,您还设置了 SC 的第 7 位,即 SC = 0xD0。因此,您有以下命令:
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | 0xD0 | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 |
+------+------+------+------+------+------+------+------+------+
然后红色LED和绿色LED交替闪烁两次,波形如下:
RED ON ----------\ /----------\
| | |
RED OFF \--------------------/ \--------------------
GREEN ON /--------------------\ /--------------------
| | |
GREEN OFF ----------/ \----------/
\________/ \__________________/ \________/ \__________________/
T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms
\_____________________________/ \_____________________________/
Repetition 1 Repetition 2
现在,假设在闪烁完成后,您希望红色 LED 持续亮起,绿色 LED 持续熄灭。因此,您需要设置位 2 和 3,以便能够定义两个 LED 的最终状态。 (如果您不设置这些位,那么位 0 和 1 的值将被简单地忽略。)然后您想要定义最终状态为红色打开(位 0 = 1)和绿色关闭(位 1 = 0)。因此,您会得到 SC = 0xDD。因此,您有以下命令:
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 |
+------+------+------+------+------+------+------+------+------+
然后红色LED和绿色LED交替闪烁两次,红色LED闪烁后点亮,绿色LED熄灭。您得到以下波形:
RED ON ----------\ /----------\ /--------------...
| | | |
RED OFF \--------------------/ \--------------------/
GREEN ON /--------------------\ /--------------------\
| | | |
GREEN OFF ----------/ \----------/ \--------------...
\________/ \__________________/ \________/ \__________________/
T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms
\_____________________________/ \_____________________________/ \_____________...
Repetition 1 Repetition 2 Final state
最后,您想将重复次数减少到1(#R = 0x01),并且您想要反转闪烁波形的高低相位(T1 = 0x0A 和T2 = 0x05)。因此,您有以下命令:
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x0A | 0x05 | 0x01 | 0x00 |
+------+------+------+------+------+------+------+------+------+
得到如下波形:
RED ON --------------------\ /--------------...
| |
RED OFF \----------/
GREEN ON /----------\
| |
GREEN OFF --------------------/ \--------------...
\__________________/ \________/
T1 = 1000ms T2 = 500ms
\_____________________________/ \_____________...
Repetition 1 Final state
有没有人知道如何通过Android上的方法Reader.control()
控制ACR122U的双色LED? (库 acssmc-1.1.3)。
我正在阅读 API 并且不知道命令描述的含义:
示例:
byte[] command = {(byte) 0xFF, (byte) 0x00, (byte) 0x40, (byte) 0b01110111, (byte) 0x04, (byte) 20, (byte) 30, (byte) 3, (byte) 2};
这些东西我不明白:
- 字节 3 (P2):我不知道如何设置它。
- 字节 5 (T1):从字节 3 以某种方式控制的第一个周期状态持续时间?
- 字节 6 (T2):从字节 3 以某种方式控制的第二个周期状态持续时间?
- 字节 7(重复次数):第 1 和第 2 循环状态重复的总次数?
一些解释性的例子会很棒。
改变 LED 状态的命令是
+------+------+------+------+------+------+------+------+------+ | CLA | INS | P1 | P2 | Lc | DATA | +------+------+------+------+------+------+------+------+------+ | 0xFF | 0x00 | 0x40 | SC | 0x04 | T1 | T2 | #R | 0x00 | +------+------+------+------+------+------+------+------+------+
其中 SC 定义 LED 的状态(连续 on/off,闪烁),T1/T2 定义闪烁波形,#R 定义闪烁波形的重复次数。
因此,定义 LED 应该如何闪烁以及闪烁完成后它们应该如何显示的主要参数是 SC。这是一个8位的字段:
- 位 0:此标志定义闪烁完成后红色 LED 的状态(另见位 2)。
- 位 1:此标志定义闪烁完成后绿色 LED 的状态(另见位 3)。
- Bit 2: 仅当此标志被设置为 (1) 时,红色 LED 的状态将在闪烁完成后设置为 bit 0 的值。如果此标志被清除 (0),红色 LED 将 return 到您发出 LED 控制命令之前的状态。
- Bit 3: 仅当此标志被设置为 (1) 时,绿色 LED 的状态将在闪烁完成后设置为 bit 0 的值。如果此标志被清除 (0),绿色 LED 将 return 到您发出 LED 控制命令之前的状态。
- 第 4 位:此标志定义红色 LED 在开始执行 LED 控制命令时应设置的状态。
- 第 5 位:此标志定义绿色 LED 在开始执行 LED 控制命令时应设置的状态。
- 第 6 位:此标志定义是否应使用闪烁波形切换红色 LED。
- 第 7 位:此标志定义是否应使用闪烁波形切换绿色 LED。
因此,假设您设置了 SC 的第 4 位和第 6 位(并清除其余部分),即 SC = 0x50。此外,您设置 T1 = 5 (0x05)、T2 = 10 (0x0A) 和#R = 2 (0x02)。因此,您有以下命令:
+------+------+------+------+------+------+------+------+------+ | 0xFF | 0x00 | 0x40 | 0x50 | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 | +------+------+------+------+------+------+------+------+------+
然后绿色LED熄灭,红色LED闪烁两次,波形如下:
RED ON ----------\ /----------\ | | | RED OFF \--------------------/ \-------------------- \________/ \__________________/ \________/ \__________________/ T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms \_____________________________/ \_____________________________/ Repetition 1 Repetition 2
现在,假设您还想使绿色 LED 闪烁,但其初始状态设置为关闭(以便闪烁在红色和绿色之间切换,而不是红色和不亮)。因此,您还设置了 SC 的第 7 位,即 SC = 0xD0。因此,您有以下命令:
+------+------+------+------+------+------+------+------+------+ | 0xFF | 0x00 | 0x40 | 0xD0 | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 | +------+------+------+------+------+------+------+------+------+
然后红色LED和绿色LED交替闪烁两次,波形如下:
RED ON ----------\ /----------\ | | | RED OFF \--------------------/ \-------------------- GREEN ON /--------------------\ /-------------------- | | | GREEN OFF ----------/ \----------/ \________/ \__________________/ \________/ \__________________/ T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms \_____________________________/ \_____________________________/ Repetition 1 Repetition 2
现在,假设在闪烁完成后,您希望红色 LED 持续亮起,绿色 LED 持续熄灭。因此,您需要设置位 2 和 3,以便能够定义两个 LED 的最终状态。 (如果您不设置这些位,那么位 0 和 1 的值将被简单地忽略。)然后您想要定义最终状态为红色打开(位 0 = 1)和绿色关闭(位 1 = 0)。因此,您会得到 SC = 0xDD。因此,您有以下命令:
+------+------+------+------+------+------+------+------+------+ | 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 | +------+------+------+------+------+------+------+------+------+
然后红色LED和绿色LED交替闪烁两次,红色LED闪烁后点亮,绿色LED熄灭。您得到以下波形:
RED ON ----------\ /----------\ /--------------... | | | | RED OFF \--------------------/ \--------------------/ GREEN ON /--------------------\ /--------------------\ | | | | GREEN OFF ----------/ \----------/ \--------------... \________/ \__________________/ \________/ \__________________/ T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms \_____________________________/ \_____________________________/ \_____________... Repetition 1 Repetition 2 Final state
最后,您想将重复次数减少到1(#R = 0x01),并且您想要反转闪烁波形的高低相位(T1 = 0x0A 和T2 = 0x05)。因此,您有以下命令:
+------+------+------+------+------+------+------+------+------+ | 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x0A | 0x05 | 0x01 | 0x00 | +------+------+------+------+------+------+------+------+------+
得到如下波形:
RED ON --------------------\ /--------------... | | RED OFF \----------/ GREEN ON /----------\ | | GREEN OFF --------------------/ \--------------... \__________________/ \________/ T1 = 1000ms T2 = 500ms \_____________________________/ \_____________... Repetition 1 Final state