2

Androidの方法でACR122Uの2色LEDを制御する方法を知っている人はいReader.control()ますか? (ライブラリ 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 から何らかの方法で制御される 2 番目のサイクル状態の持続時間?
  • バイト 7 (繰り返し回数): 1 番目と 2 番目のサイクル状態の繰り返しの合計数?

いくつかの説明された例は素晴らしいでしょう。

4

1 に答える 1

9

LED の状態を変更するコマンドは次のとおりです。

+------+------+------+------+------+------+------+ ------+------+
| | CLA | イン | P1 | P2 | LC | データ |
+------+------+------+------+------+------+------+ ------+------+
| | 0xFF | 0x00 | 0x40 | SC | 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 が次の波形で 2 回点滅します。

赤オン ----------\ /----------\
                   | | | | | |                    
赤オフ \--------------------/ \--------------------

         \________/ \____/ \________/ \__________________/
         T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms

         \_____________________________/ \_______________/
                  繰り返し 1 繰り返し 2

ここで、緑の LED も点滅させたいと仮定しますが、初期状態はオフに設定されています (赤と光なしではなく、赤と緑の間で点滅が切り替わるように)。したがって、SC のビット 7 も設定します。つまり、SC = 0xD0 です。したがって、次のコマンドがあります。

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

次に、赤の LED と緑の LED が次の波形で交互に 2 回点滅します。

赤オン ----------\ /----------\
                     | | | | | |                    
赤オフ \--------------------/ \--------------------

グリーンオン /--------------------\ /--------------------
                     | | | | | |                    
グリーンオフ ----------/ \----------/

           \________/ \____/ \________/ \__________________/
           T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms

           \_____________________________/ \_______________/
                    繰り返し 1 繰り返し 2

ここで、点滅が終了した後、赤色の LED を連続的にオンにし、緑色の LED を連続的にオフにしたいとします。したがって、2 つの LED の最終状態を定義できるようにするには、ビット 2 と 3 を設定する必要があります。(これらのビットを設定しない場合、ビット 0 と 1 の値は単純に無視されます。) 次に、赤オン (ビット 0 = 1) と緑オフ (ビット 1 = 0) の最終状態を定義します。したがって、SC = 0xDD が得られます。したがって、次のコマンドがあります。

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

その後、赤色LEDと緑色LEDが交互に2回点滅し、点滅後に赤色LEDが点灯し、緑色LEDが消灯します。次の波形が得られます。

赤オン ----------\ /----------\ /--------------...
                     | | | | | | | |
レッドオフ \--------------------/ \--------------------/

グリーンオン /--------------------\ /--------------------\
                     | | | | | | | |
グリーンオフ ----------/ \----------/ \--------------...

           \________/ \____/ \________/ \__________________/
           T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms

           \_____________________________/ \_______________/ \______________...
                    繰り返し 1 繰り返し 2 最終状態

最後に、繰り返し回数を 1 に減らし (#R = 0x01)、点滅波形の高位相と低位相を反転させます (T1 = 0x0A および T2 = 0x05)。したがって、次のコマンドがあります。

+------+------+------+------+------+------+------+ ------+------+
| | 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x0A | 0x05 | 0x01 | 0x00 |
+------+------+------+------+------+------+------+ ------+------+

次の波形が得られます。

赤オン--------------------\ /--------------...
                               | | | |
赤オフ \----------/

グリーンオン /----------\
                               | | | |
グリーンオフ ------/ \--------------...

           \____/ \________/
               T1 = 1000ms T2 = 500ms

           \_____________________________/ \_____________...
                    繰り返し 1 最終状態
于 2016-08-05T07:56:27.747 に答える