Всем привет. У меня есть 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.
Помогите пожалуйста решить проблему с отправкой данных. Любая помощь приветствуются.
Извините за мой русский. За ранее спасибо.