Как отключить зуммер устройства чтения смарт-карт?

nfc smartcard-reader

688 просмотра

2 ответа

1 Репутация автора

Я новичок со считывателями смарт-карт. Я купил ACR1252u и застрял в отключении зуммера и привело. Я пробовал этот код: https://the--semicolon.blogspot.it/p/this-is-simple-way-to-restart-your.html?showComment=1468833507200

  public void turnOffBuzzer()
        {
                retCode = Card.SCardConnect(hContext, readername, Card.SCARD_SHARE_SHARED, Card.SCARD_PROTOCOL_T0 | Card.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);
                byte data=  0x00 ;
                byte[] control = new byte[] { 0xE0, 0x00, 0x00, 0x28, 0x01 };
                uint value = BitConverter.ToUInt32(control, 0);
                byte receivedBytes = new byte();
                int pcbBytesReturned = 0;
                long status = Card.SCardControl(hCard, value, ref data, 1,ref receivedBytes , 1, ref  pcbBytesReturned);
                MessageBox.Show(status.ToString());
        }

но статус дает мне 1 не 0

Автор: Farzad Moghaddampoor Источник Размещён: 18.07.2016 09:24

Ответы (2)


0 плюса

1 Репутация автора

Хм, я узнал, как это работает!

Для выключения зуммера:

 retCode = Card.SCardConnect(hContext, readername, Card.SCARD_SHARE_SHARED,
                  Card.SCARD_PROTOCOL_T0 | Card.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            Byte[] setBuzzerLoud = new Byte[6];
            setBuzzerLoud[0] = 0xE0;
            setBuzzerLoud[1] = 0x00;
            setBuzzerLoud[2] = 0x00;
            setBuzzerLoud[3] = 0x21;
            setBuzzerLoud[4] = 0x01;
            setBuzzerLoud[5] = 0x77;
            uint pcBytesReturned = 0;
            Byte[] RecieveBuff = new Byte[64];
            uint controlcode = 3225264;
            int status = Card.SCardControl(hCard, controlcode, ref setBuzzerLoud[0], 6, ref RecieveBuff[0], RecieveBuff.Length, ref pcBytesReturned);

            MessageBox.Show(status.ToString());

Для выключения светодиода:

  retCode = Card.SCardConnect(hContext, readername, Card.SCARD_SHARE_SHARED,
               Card.SCARD_PROTOCOL_T0 | Card.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            Byte[] setLEDOFF = new Byte[6];
            setLEDOFF[0] = 0xE0;
            setLEDOFF[1] = 0x00;
            setLEDOFF[2] = 0x00;
            setLEDOFF[3] = 0x21;
            setLEDOFF[4] = 0x01;
            setLEDOFF[5] = 0x79;
            uint pcBytesReturned = 0;
            Byte[] RecieveBuff = new Byte[64];
            uint controlcode = 3225264;
            int status = Card.SCardControl(hCard, controlcode, ref setLEDOFF[0], 6, ref RecieveBuff[0], RecieveBuff.Length, ref pcBytesReturned);

            MessageBox.Show(status.ToString());

Для выключения РФ:

 retCode = Card.SCardConnect(hContext, readername, Card.SCARD_SHARE_SHARED,
             Card.SCARD_PROTOCOL_T0 | Card.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

            Byte[] setRFOff = new Byte[6];
            setRFOff[0] = 0xE0;
            setRFOff[1] = 0x00;
            setRFOff[2] = 0x00;
            setRFOff[3] = 0x23;
            setRFOff[4] = 0x01;
            setRFOff[5] = 0x80;
            uint pcBytesReturned = 0;
            Byte[] RecieveBuff = new Byte[64];
            uint controlcode = 3225264;
            int status = Card.SCardControl(hCard, controlcode, ref setRFOff[0], 6, ref RecieveBuff[0], RecieveBuff.Length, ref pcBytesReturned);

            MessageBox.Show(status.ToString());

Интересным является контрольный код, в котором я отлаживал код c ++, упомянутый в ссылке, чтобы найти его для этого устройства чтения смарт-карт:

DWORD controlcode = SCARD_CTL_CODE(3500);

Код выхода был написан на странице 41/77.

SCARD_CTL_CODE (3500)

Единственная проблема - как отключить настройки без RFID на кард-ридере. Я также нашел статью, в которой говорится об изменении ключа реестра в параметрах usb, который я тоже собираюсь попробовать. Любой, кто может помочь мне в этом, я был бы также рад.

Готово! наслаждаться

Автор: Farzad Moghaddampoor Размещён: 19.07.2016 09:31

0 плюса

5 Репутация автора

Вы можете попробовать использовать «Card.SCARD_SHARE_DIRECT» в функции Card.SCardConnect, если вы хотите отправить некоторые команды ScardControl, когда рядом с читателем нет тега rfid.

Автор: Murat Размещён: 12.09.2019 08:55
Вопросы из категории :
32x32