2016-07-30 60 views
0

有没有人有任何线索如何通过Android上的方法Reader.control()控制ACR122U的双色LED? (库acssmc-1.1.3)。ACR122U LED控制

我读的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次循环状态重复总次数?

一些解释的例子会很棒。

回答

6

的命令改变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是否应以闪烁波形切换。

所以让我们假设设置位4和SC的6(并清除其余部分),即SC =为0x50。此外,您设置T1 = 5(0x05),T2 = 10(0x0A)和#R = 2(0x02)。因此,你有以下命令:

 
+------+------+------+------+------+------+------+------+------+ 
| 0xFF | 0x00 | 0x40 | 0x50 | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 | 
+------+------+------+------+------+------+------+------+------+ 

然后绿色指示灯熄灭,红色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 = 0×01),并要反转闪烁波形的高和低相位(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 
+1

希望我可以给你一个+1的提问编辑... –

+0

你实际测试呢?命令完成后,我无法使LED状态保持不变。它闪烁的很好,但不幸的是,它在命令完成后回到默认状态(红色)。我正在使用你的例子:'[0xFF,0,0x40,0xDD,0x04,0x05,0x0a,0x02,0x00]'。 –

+0

@AndréBorie是的,它适用于我在这里的两台ACR122U读卡器。 –