Envie o comando para o dispositivo USB (FingerPrint Scanner) sem driver para o Linux

0

Estou tentando criar um aplicativo com controle remoto de um sensor de impressão digital (Guia incluído no link) para inscrição e identificação de impressões digitais são Raspberry PI 3 Model. Existe um SDK_DEMO para esta funcionalidade específica apenas no Windows, que você pode encontrar no Guile que eu mencionei acima.

  • O SDK_DEMO é escrito em C ++ no Visual Studio, portanto não posso manipular o código para executá-lo no Raspberry Pi 3.

Do código-fonte SDK_DEMO, descobri que comando preciso enviar para executar tarefas.

Os comandos

CMD_NONE                = 0x00,
CMD_OPEN                = 0x01,
CMD_CLOSE               = 0x02,
CMD_USB_INTERNAL_CHECK  = 0x03,
CMD_CHANGE_BAUDRATE     = 0x04,
CMD_MODULE_INFO         = 0x06,

CMD_CMOS_LED            = 0x12,

CMD_ENROLL_COUNT        = 0x20,
CMD_CHECK_ENROLLED      = 0x21,
CMD_ENROLL_START        = 0x22,
CMD_ENROLL              = 0x23,
CMD_ENROLL1             = 0x23,
CMD_ENROLL2             = 0x24,
CMD_ENROLL3             = 0x25,
CMD_IS_PRESS_FINGER     = 0x26,

CMD_DELETE              = 0x40,
CMD_DELETE_ALL          = 0x41,

CMD_VERIFY              = 0x50,
CMD_IDENTIFY            = 0x51,
CMD_VERIFY_TEMPLATE     = 0x52,
CMD_IDENTIFY_TEMPLATE   = 0x53,

CMD_CAPTURE             = 0x60,

CMD_GET_IMAGE           = 0x62,
CMD_GET_RAWIMAGE        = 0x63,

CMD_GET_TEMPLATE        = 0x70,
CMD_ADD_TEMPLATE        = 0x71,
CMD_GET_DATABASE_START  = 0x72,
CMD_GET_DATABASE_END    = 0x73,

CMD_FW_UPDATE           = 0x80,
CMD_ISO_UPDATE          = 0x81,
CMD_FAKE_DETECTOR       = 0x91,

CMD_SET_SECURITY_LEVEL  = 0xF0,
CMD_GET_SECURITY_LEVEL  = 0xF1,

ACK_OK                  = 0x30,
NACK_INFO               = 0x31,

O SKD_DEMO reconheceu o sensor FingerPrint como armazenamento em massa e, de alguma forma, estava executando os comandos desse modo.

No Ubuntu, porém, quando eu conecto o dispositivo usb, não recebo nenhuma montagem de armazenamento em massa e, em lsusb , recebo isso:

Eutenhopesquisadosobreissoetentei

echo"0x12" >> /dev/bus/usb/001/008

Mas recebi um erro de gravação por um argumento inválido.

Aqui estão os comandos do terminal para a tentativa de eco:

Existe uma maneira de enviar comandos brutos com este formato e executar ações sem precisar gravar um driver para este dispositivo USB no Linux?

    
por Konstantinos Tsirakos 19.10.2018 / 14:03

1 resposta

0

Eu não acho que pode funcionar assim. Por um lado, echo "0x012... enviou a string literal de caracteres ascii 0x12 , que é apenas uma representação de base 16 dos dados binários reais necessários para se comunicar com o dispositivo.

Dê uma olhada no python, talvez (você pode usar muitas outras linguagens para fazer isso também, no entanto, o Python geralmente é um bom lugar para começar) e se comunicar com dispositivos USB. Talvez aqui: link

    
por 19.10.2018 / 15:43