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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

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

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

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

Скачиваете 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
Репутация: 10
По умолчанию

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

Цитата:
Сообщение от 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
Репутация: 10
По умолчанию

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

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

Все проще оказалось.
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 пашет пока.
АндрейНет вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправить данные на открытый порт 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


23:52.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

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