Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> usb_bulk_read() - open error 11 Resource temporari 
:(
    Опции темы
GSMD
Дата 24.10.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.9.2005

Репутация: нет
Всего: 1



I've succeeded with usb_bulk_write() but can't utilize usb_bulk_read(). It returns an error open error 11 Resource temporarily unavailable.

Here is the output of
cat /prog/bus/usb/devices:
Код
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=16 #Cfgs=  1
P:  Vendor=1664 ProdID=d100 Rev= 2.00
S:  Manufacturer=Argox Informations
S:  Product=CRD -10
S:  SerialNumber=60227075  
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=1ms
E:  Ad=02(O) Atr=03(Int.) MxPS=  64 Ivl=1ms


The source code that utilizes the mentioned functions:
Код

#include <usbpp.h> 
#include <stdio.h>
#include <iostream.h>
#include <errno.h> 
#define VENDOR_ARGOX 0x1664 
#define DEVICE_PT 0xd100 
int main(void)
{
struct usb_bus *bus; 
struct usb_device *dev;
int n,m,ret; 
usb_init();
char string[256];
n=usb_find_busses(); 
m=usb_find_devices();
usb_dev_handle *udev;
for (bus = usb_busses; bus; bus = bus->next) { 
for (dev = bus->devices; dev; dev = dev->next) {
if (dev->descriptor.idVendor==VENDOR_ARGOX) 
if (dev->descriptor.idProduct==DEVICE_PT){  
udev = usb_open(dev);
if (udev) { 
printf("found argox_PT dev-%s on bus-%s\n",dev->filename,bus->dirname); 
usb_detach_kernel_driver_np(udev, 0); 
usb_set_configuration(udev, 1);
if (dev->descriptor.iManufacturer) { 
usb_get_string_simple(udev, dev->descriptor.iManufacturer, string, sizeof(string));
if (ret > 0)
printf("- Manufacturer : %s\n", string);
else 
printf("- Unable to fetch manufacturer string\n"); 
}
if (dev->descriptor.iProduct) { 
ret = usb_get_string_simple(udev, dev->descriptor.iProduct, string, sizeof(string));
if (ret > 0)
printf("- Product : %s\n", string);
else
printf("- Unable to fetch product string\n");
}
if (dev->descriptor.iSerialNumber) { 
ret = usb_get_string_simple(udev, dev->descriptor.iSerialNumber, string, sizeof(string));
if (ret > 0) 
printf("- Serial Number: %s\n", string);
else
printf("- Unable to fetch serial number string\n");
}
ret = usb_claim_interface(udev,0); 
if (ret>=0) printf("device claimed!\n"); 
else printf("open error %d %s\n", errno, strerror(errno));
unsigned int WRITE=dev->config[0].interface[0].altsetting[0].endpoint[1].bEndpointAddress;
unsigned int READ=dev->config[0].interface[0].altsetting[0].endpoint[0].bEndpointAddress;
char * buff = new char[10];
delete [] buff; 
char bufferout[]={0x1b,0x02,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x02,0x1b,0x3f,0x00};
char bufferin[256];
int sizein=dev->config[0].interface[0].altsetting[0].endpoint[1].wMaxPacketSize;
int sizeout=dev->config[0].interface[0].altsetting[0].endpoint[0].wMaxPacketSize;
int pts=dev->config[0].interface[0].altsetting[0].endpoint[0].bInterval;
int i; 
printf("WRITE TO %02xh READ FROM %02xh\n SIZEIN %d SIZEOUT %d\n PTS %d\n",WRITE,READ,sizein,sizeout,pts);
for (i=0;i<14;i++){
*(buff+i)=bufferout[i];
ret=usb_interrupt_write(udev, WRITE, buff, 1, 100);
if (ret>=0) printf("buf=%02x, transfered %d bytes \n",*buff+i,ret); 
else printf("open error %d %s\n", errno, strerror(errno));
}
for (i=0;i<14;i++){
ret=usb_interrupt_read(udev, READ, buff, 1, 100);
if (ret>=0) {printf("buf=%02x, read %d bytes \n",*buff+i,ret); bufferin[i]=*buff;}
else printf("open error %d %s\n", errno, strerror(errno));
}
for(i=0;i<14;i++) printf("read:%02x \n",bufferin[i]);
usb_release_interface(udev,0);
usb_close (udev);
}}
else continue;
}}
return 0;
}


Got no ideas of what am I doing wrong. Anyone faced such a problem, please give a hint.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0852 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.