LINUX.ORG.RU

Fingerprint R101S не работает в Linux

 , ,


0

3

Всем привет. У меня есть Fingerprint R101S в Windows 10 x64 все работает нормально (Demo и исходники). Но в Ubuntu 16.04 x64 не работает.

Ссылка SDK и исходника: https://www.dropbox.com/sh/pznvlzx8qx5nfr3/AABpzhSyjqH0qWNYgMvxqAA9a?dl=0 Там старый исходник для linux. Я изменил код

    if ((fd = usbfs_search("/proc/bus/usb",vendorID,productID)) < 0)

на

    if ((fd = usbfs_search("/dev/bus/usb",vendorID,productID)) < 0).

Значении vendorID и productID изменил. Взял из устройства.

Программа подключаются, но верификация и остальные операции не работают.

Код ioctl:

//----Send ctrl package to device for get result---------
BOOL SendCtrlPackage(int nRequestType,int nCmdLen)
{
   //send
  unsigned char pData[32]={0};
  int nSent = 0;
  int i;

  //send cmd request
  for (i=0; i<100; ++i)   {
    
    nSent = pusb_control_msg(fdusb,0xc0,nRequestType, 
		     nCmdLen, 0, pData, 2, 500);

    if (nSent >= 2) {
      break;
    dDelay(100);
    }
  }
  if(i >= 100) 
  {
     // printf("ctrl error\n");
      return  FALSE;
  }

  return TRUE;
}

nSent всегда принимает -1.

И проверил через libusb у него то же проблема.

//----Send ctrl package to device for get result---------
BOOL SendCtrlPackage(struct usb_dev_handle *usb_handle, int nRequestType,int nCmdLen)
{
   //send
  char pData[32]={0};
  int nSent = 0, isOn = 0;
  int i;

  //send cmd request
  for (i=0; i<100; ++i)   {
    
      nSent =  usb_control_msg(usb_handle,
                               nRequestType,
                               0xc0,
                               0,
                               2,
                               pData,
                               nCmdLen,
                               500);
   if (nSent >= 2) {
      break;
      dDelay(100);
    }
  }
  if(i >= 100) 
  {
     // printf("ctrl error\n");
      return  FALSE;
  }

  return TRUE;
}

nSent всегда принимает -32.

Помогите пожалуйста решить проблему с отправкой данных. Любая помощь приветствуются.

Извините за мой русский. За ранее спасибо.



Последнее исправление: ITMAX (всего исправлений: 1)

Может вам попробовать этот код в системе, где ядро <3.5, где ещё был ″/proc/bus/usb/″, может ещё какие изменения API были с тех про и код из-за них не работает.

mky ★★★★★
()
Ответ на: комментарий от mky

спасибо за ответ mky

но вопрос остается актуальным

ITMAX
() автор топика

Перепиши на libusb сам. Там протокол дубовый, за пару вечеров раскуришь. Быстрее будет, чем то что есть приводить в порядок.

Dark_SavanT ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.