Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2012, 09:20   #1
дмитрий12123
Пользователь
 
Регистрация: 30.08.2012
Сообщений: 20
По умолчанию получение данных от usb устройства перевести ?

Есть такая программа на с:
libusb_init(NULL);
libusb_set_debug(NULL, USB_DEBUG_LEVEL);
libusb_device_handle *handle = libusb_open_device_with_vid_pid(NUL L, VID, PID);
if (handle == NULL)
{printf("Устройство не подключено\n");}
if (libusb_kernel_driver_active(handle ,DEV_INTF))
libusb_detach_kernel_driver(handle, DEV_INTF);
lsusb -v -d VID:PID
if (libusb_claim_interface(handle, DEV_INTF) < 0)
{printf("Ошибка интерфейса\n");}
int returned = libusb_interrupt_transfer(handle, EP_IN, buf, DATA_SIZE, &ret, 1000);
if (returned >= 0)
{cout << "buf[0] = " << (int)buf[0] << endl;
cout << "buf[1] = " << (int)buf[1] << endl;
cout << "buf[2] = " << (int)buf[2] << endl;
cout << "buf[3] = " << (int)buf[3] << endl;}
unsigned char buf[DATA_SIZE];

Как перевести на делфи?
дмитрий12123 вне форума Ответить с цитированием
Старый 24.09.2012, 09:34   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Начнем с того, что код программы выложен не полностью: какие библиотеки используются, непонятно (хотя рискну предположить, что это libusb.dll).
Подключаете ее в дельфи и используете те же функции/процедуры, что и в Си. Останется перевести только синтаксис и структуру языка.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 24.09.2012, 09:45   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Как то так:
Код:
const
  LIBUSB_PATH_MAX = 512;
  LIBUSB_DLL_NAME =  'libusb0.dll';

procedure usb_init; cdecl; external LIBUSB_DLL_NAME name 'usb_init';
procedure usb_set_debug(level: longword); cdecl; external LIBUSB_DLL_NAME name 'usb_set_debug';
... и т.д.

var h: libusb_device_handle;
   vid, pid: word;
   returned: integer;
   buf[0..DATA_SIZE] array of char;
...

 libusb_init(nil);
 libusb_set_debug(nil, USB_DEBUG_LEVEL); 
 h:= libusb_open_device_with_vid_pid(nil, VID, PID);

 if (h = 0) then 
  writeln('Устройство не подключено');

 if (libusb_kernel_driver_active(h,DEV_INTF)) then
  libusb_detach_kernel_driver(h, DEV_INTF);

 if (libusb_claim_interface(h, DEV_INTF) < 0) then
  writeln('Ошибка интерфейса');

 returned:= libusb_interrupt_transfer(h, EP_IN, buf, DATA_SIZE, ret^, 1000);

 if (returned >= 0) then begin
 ...
однако не мучьте себя, все уже давно портировано. Libusb0.dll и модуль экспорта LibUSB.PAS ищите
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 24.09.2012, 13:30   #4
дмитрий12123
Пользователь
 
Регистрация: 30.08.2012
Сообщений: 20
По умолчанию

Верно насчет libusb.dll.
дмитрий12123 вне форума Ответить с цитированием
Старый 24.09.2012, 14:16   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...libusb0.dll является частью проекта LibUSB. Так что думайте головой.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не определяются USB устройства в windows Mixasik Windows 8 28.01.2012 00:00
Не работают USB-устройства Iskander1969 Помощь студентам 6 17.12.2010 19:49
Windows Служба USB устройства caesar_88 Общие вопросы Delphi 2 19.06.2010 23:56
USB устройства KREGI Компоненты Delphi 11 29.06.2009 23:39
USB устройства. Ky3Heu, Win Api 1 04.05.2009 21:06