ACS ACR 1255U-J1 NFC Reader - Как запустить автоматический опрос

Я хочу подключиться к устройству из приложения для Android. Мне уже удалось успешно авторизоваться. Теперь я хотел бы запустить автоматический опрос, как описано в справочнике (команда запроса: E0 00 00 40 01, стр.30, https://www.acs.com.hk/download-manual/7664/REF-ACR1255U-J1-1.12.pdf), но я не понимаю.

Думаю, надо зашифровать запрос к читателю. Это правильно? Если да, то какой ключ мне нужно использовать? Приходит ли ключ (сеансовый ключ?) Из окончательного ответа в потоке авторизации?

Для тестирования я использовал демонстрационное приложение (https://www.acs.com.hk/download-driver-unified/9644/ACS-BT-EVK-Android-1.01r2.zip) и Wireshark для записи запросов. Я был очень удивлен, обнаружив, что запрос менялся каждый раз, когда я нажимал кнопку "начать опрос". Я ожидал, что он будет таким же, независимо от того, как часто я нажимаю.

Я был бы признателен за более полезное объяснение команды запуска опроса, чем то, которое я могу найти в справочнике.

1 ответ

Я только что создал команду автоматического опроса:

private static final byte[] AUTO_POLLING_START = {(byte) 0xE0, 0x00, 0x00, 0x40, 0x01};

затем функция, которую я выполняю в прослушивателе onAuthenticationComplete, после успешной аутентификации

private void startPolling() {

    if (bluetoothReader == null) {
        authStatus.setText("Card reader not ready");
        return;
    }
    if (!bluetoothReader.transmitEscapeCommand(AUTO_POLLING_START)) {
        authStatus.setText("Card reader not ready");
    }
}
bluetoothReader.setOnAuthenticationCompleteListener(new BluetoothReader.OnAuthenticationCompleteListener() {
            @Override
            public void onAuthenticationComplete(BluetoothReader bluetoothReader, final int errorCode) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (errorCode == BluetoothReader.ERROR_SUCCESS) {
                            authStatus.setText("Authentication Success!");
                            startPolling();

                        } else {
                            authStatus.setText("Authentication Failed!");
                        }
                    }
                });
            }
        });
Другие вопросы по тегам