簡體   English   中英

在Java中關閉NFC閱讀器(NFC ACR122U)上的蜂鳴器

[英]Turning off the buzzer on NFC reader ( NFC ACR122U) in Java

我在使用NFC卡的Java程序中使用ACR122U NFC讀取器。 但是默認情況下,讀取器在讀取卡時會發出嗡嗡聲。 我試圖通過關閉NFC閱讀器文檔(此處為http://www.acs.com.hk/download-manual/419/API-ACR122U-2.03.pdf )顯示關閉,但您無法關閉它蜂鳴器。 但是我很難為它編寫一個Java方法。 如您所見,我的班級已經具有與NFC閱讀器通信的方法。 但是我無法將文檔中顯示的命令轉換為java方法。

NFCcard類:

package dataStores;

import java.util.List;

import javax.smartcardio.Card;
import javax.smartcardio.CardChannel;
import javax.smartcardio.CardException;
import javax.smartcardio.CardTerminal;
import javax.smartcardio.CommandAPDU;
import javax.smartcardio.ResponseAPDU;
import javax.smartcardio.TerminalFactory;

public class NFCcard {

    private TerminalFactory factory; 
    private List<CardTerminal> terminals;
    private CardTerminal terminal;
    private Card card ;
    public CardChannel cardChannel;


    public NFCcard() throws CardException {
        factory = TerminalFactory.getDefault();
        terminals = factory.terminals().list();
        terminal = terminals.get(0);
        card = terminal.connect("*");
        cardChannel = card.getBasicChannel();   
        cardChannel.transmit( new CommandAPDU(new byte[] { (byte)0xE0, (byte)0x00, (byte)0x00, (byte)0x21, (byte)0x01,(byte)0x77 }));
    }



    public String getCardID() throws CardException{
        String cardID = "";
        ResponseAPDU answer=cardChannel.transmit( new CommandAPDU(new byte[] { (byte)0xFF, (byte)0xCA, (byte)0x00, (byte)0x00, (byte)0x00 }));
        byte r[] = answer.getData();
          for (int i=0; i<r.length; i++)
              cardID+=r[i];
        return cardID;
    }

}

您可以嘗試這樣的事情:

byte buzzerOn = (byte)0xFF;
byte buzzerOff = (byte)0x00;
byte clazz = (byte)0xFF;
byte ins = (byte)0x00;
byte p1 = (byte)0x52;
byte p2 = buzzerOff;
byte le = (byte)0x00;

byte[] apdu = new byte[]{clazz,ins,p1,p2,le};
ResponseAPDU answer = cardChannel.transmit( new CommandAPDU(apdu));

byte successSW1 = (byte)0x90;
byte successSW2 = (byte)0x00;
if(answer.getSW1() == successSW1 && answer.getSW2() == successSW2){
    //done
}else{
    //failed
}

響應必須為90 00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM