ACR122U LED控制

Sam*_*ček 1 android apdu led smartcard-reader acr122

有没有人知道如何通过Reader.control()Android 上的方法控制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};
Run Code Online (Sandbox Code Playgroud)

这些东西我不明白:

  • 字节3(P2):我无法弄清楚如何设置它.
  • 字节5(T1):从字节3以某种方式控制的第一个循环状态持续时间?
  • 字节6(T2):从字节3以某种方式控制的第二个循环状态持续时间?
  • 字节7(重复次数):第1次和第2次循环的总重复次数?

一些解释的例子很棒.

Mic*_*and 7

更改LED状态的命令是

+------+------+------+------+------+------+------+------+------+
| CLA  | INS  | P1   | P2   | Lc   | DATA                      |
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | SC   | 0x04 | T1   | T2   | #R   | 0x00 |
+------+------+------+------+------+------+------+------+------+

其中SC定义LED的状态(连续开/关,闪烁),T1/T2定义闪烁波形,#R定义闪烁波形的重复次数.

因此,定义LED应该如何闪烁以及它们在完成闪烁后应该如何看的主要参数是SC.这是一个8位的字段:

  • 位0:该标志定义闪烁完成后红色LED的状态(另请参见位2).
  • 位1:该标志定义闪烁完成后绿色LED的状态(另请参见位3).
  • 位2:仅当该标志置位(1)时,闪烁完成后红色LED的状态将被设置为位0的值.如果清除此标志(0),红色LED将返回到发出LED控制命令之前的状态.
  • 位3:仅当该标志置位(1)时,闪烁完成后绿色LED的状态将被设置为位0的值.如果清除此标志(0),绿色LED将返回到发出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