Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi > Мультимедиа в Delphi
Регистрация

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 05.06.2019, 12:58   #1
АндрейНет
Новичок
Джуниор
 
Регистрация: 04.06.2019
Сообщений: 5
По умолчанию отправить данные сквозь USB в сторону принтера

Всем Ку.
Прошу помощи опытных камрадов.
Стоит задача имитировать передачу данных по USB.

Исходные данные:
Есть принтер Epson SureColor SC-P600 . Он умеет чистить свои головки. Команду на очистку можно отправить, нажав на кнопу из приложения, входящего в дрова принтера.

Задача:
Из Дельфи отправить такой же набор пакетов, какой отправляет драйвер на принтер. Чтобы принтер стал чистить головки, не открывая стандартное своё приложение.
Набор пакетов в HEX понюхали сниффером и зафиксировали.

Вопрос: Может кто-нибудь подсказать, куда копать?
АндрейНет вне форума Ответить с цитированием
Старый 05.06.2019, 13:04   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Так проблема в чем? Гугл по запросу delphi usb ничего не выдал? Книги и мсдн по усб тоже не доступны? Или у вас проблема хекс запихнуть в код?
p51x вне форума Ответить с цитированием
Старый 05.06.2019, 13:15   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,128
По умолчанию

Скачиваете libusb для виндоуса там будет dll и заголовочные файлы.
libusb.pas и ModuleLoader.pas
Помимо этого для работы libusb нужен ещё драйвер, скачиваете ... вроде я качал
libusbK-3.0.7.0-bin-chk
Устанавливаете через визарда.

А далее подключаетесь к устройству по его pid, vid

Код:
procedure TForm1.FormCreate(Sender: TObject);
var ck:Integer;
begin
libusb_init(Nil);
libusb_set_debug(Nil, 255);
Handle:= libusb_open_device_with_vid_pid(Nil, Device_VID, Device_PID);
if (Handle<>Nil) then
   begin
   if (libusb_kernel_driver_active(handle, InterfaceNumber)<>0) then
       libusb_detach_kernel_driver(handle, InterfaceNumber);
   ck:= libusb_claim_interface(handle, InterfaceNumber);
   if (ck<0) then Application.MessageBox(libusb_error_name(ck),'ошибка захвата USB интерфейса')
   end;

end;

procedure TForm1.FormDestroy(Sender: TObject);
var ck:Integer;
begin
 ck:= libusb_release_interface(handle, InterfaceNumber);
 if (ck<0) then Application.MessageBox(libusb_error_name(ck),'ошибка освобождения USB интерфейса')
end;
А для отправки используете
libusb_control_transfer
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 05.06.2019, 13:15   #4
АндрейНет
Новичок
Джуниор
 
Регистрация: 04.06.2019
Сообщений: 5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Так проблема в чем? Гугл по запросу delphi usb ничего не выдал? Книги и мсдн по усб тоже не доступны? Или у вас проблема хекс запихнуть в код?
Гугл много выдал.
В том числе и это.
http://www.cyberforum.ru/delphi-begi...ad1182118.html
особенно вот этот момент: Я уже перепробовал кучу сорцов из инета и дждаевский компонент, безуспешно...
Но ваш ответ мне помог намного больше, спасибо.
АндрейНет вне форума Ответить с цитированием
Старый 05.06.2019, 13:17   #5
АндрейНет
Новичок
Джуниор
 
Регистрация: 04.06.2019
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Скачиваете libusb для виндоуса там будет dll и заголовочные файлы.
libusb.pas и ModuleLoader.pas
Помимо этого для работы libusb нужен ещё драйвер, скачиваете ... вроде я качал
libusbK-3.0.7.0-bin-chk
Устанавливаете через визарда.

А далее подключаетесь к устройству по его pid, vid

Код:
procedure TForm1.FormCreate(Sender: TObject);
var ck:Integer;
begin
libusb_init(Nil);
libusb_set_debug(Nil, 255);
Handle:= libusb_open_device_with_vid_pid(Nil, Device_VID, Device_PID);
if (Handle<>Nil) then
   begin
   if (libusb_kernel_driver_active(handle, InterfaceNumber)<>0) then
       libusb_detach_kernel_driver(handle, InterfaceNumber);
   ck:= libusb_claim_interface(handle, InterfaceNumber);
   if (ck<0) then Application.MessageBox(libusb_error_name(ck),'ошибка захвата USB интерфейса')
   end;

end;

procedure TForm1.FormDestroy(Sender: TObject);
var ck:Integer;
begin
 ck:= libusb_release_interface(handle, InterfaceNumber);
 if (ck<0) then Application.MessageBox(libusb_error_name(ck),'ошибка освобождения USB интерфейса')
end;
А для отправки используете
libusb_control_transfer
Попробую! Спасибо!
АндрейНет вне форума Ответить с цитированием
Старый 06.06.2019, 01:07   #6
АндрейНет
Новичок
Джуниор
 
Регистрация: 04.06.2019
Сообщений: 5
По умолчанию

Нет.
Нифига.
ЗАдаю VID и PID точные, которые этой же либой и вынюхал.
Однако: Nil Device Handle found
Еще одно фиаско. Гугл плачет.

Последний раз редактировалось АндрейНет; 06.06.2019 в 02:27.
АндрейНет вне форума Ответить с цитированием
Старый 07.06.2019, 02:03   #7
АндрейНет
Новичок
Джуниор
 
Регистрация: 04.06.2019
Сообщений: 5
По умолчанию

Все проще оказалось.
https://support.microsoft.com/ru-ru/...-the-win32-api
или
https://github.com/andyyou/SendToPri...interHelper.cs
а также вот ))
http://www.delphikingdom.com/asp/vie...?catalogid=390
На всех NT пашет пока.
АндрейНет вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправить данные на открытый порт Leelabsuper C/C++ Сетевое программирование 1 17.09.2014 14:23
Программно отправить данные формы на сайт kockas Помощь студентам 1 29.05.2013 21:50
Отправить данные не открывая сокет Dexes PHP 8 03.05.2012 16:03
данные из си отредактировать в делфи и отправить в excel novenkaya Общие вопросы Delphi 4 11.04.2012 20:17
как отправить и загрузить данные с сервера? proglamer Работа с сетью в Delphi 3 11.03.2008 08:54


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS