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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2013, 16:51   #1
Vant
Новичок
Джуниор
 
Регистрация: 22.05.2013
Сообщений: 5
По умолчанию Управление usb

Добрый день,возникла такая задача,с которой я не в силах разобраться.
Имеется к примеру машинка подключенная к компьютеру через usb,необходимо написать процедуру например в делфи или другом языке программирования,чтобы при нажатии на кнопку машинка начинала ехать.
Буду рад любой помощи даже небольшому примерному коду.
Vant вне форума Ответить с цитированием
Старый 22.05.2013, 17:04   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Примерному коду *чего* - управления машинкой?
Хоть скажите машинка какая...
waleri вне форума Ответить с цитированием
Старый 22.05.2013, 17:08   #3
Vant
Новичок
Джуниор
 
Регистрация: 22.05.2013
Сообщений: 5
По умолчанию

Дело в том что ее нету ,это все в теории.
Представим у нас есть машинка она подключена через usb в ней мотор нам надо написать в делфи программу ,в которой есть 2 кнопки.Нажмем первую кнопку поедет в перед ,нажмем 2 поедет назад.Хотя бы примерно что должно быть

Получается так,мы жмем на кнопку ,а на шину идет сигнал.Как это описать ?

Последний раз редактировалось Vant; 22.05.2013 в 17:38.
Vant вне форума Ответить с цитированием
Старый 22.05.2013, 20:06   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Описание API вызова библиотеки HIDOUTEX.DLL
А чем не устраивала системная HID.DLL?
waleri вне форума Ответить с цитированием
Старый 22.05.2013, 22:06   #6
Vant
Новичок
Джуниор
 
Регистрация: 22.05.2013
Сообщений: 5
По умолчанию

Спасибо за ответы,но я все равно не могу вникнуть как мне написать
begin
отослать на usb порт данные
end
Vant вне форума Ответить с цитированием
Старый 22.05.2013, 22:14   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А чем не устраивала системная HID.DLL?
вас смутило похожее название? Неудобство API для быстрого старта конечного пользователя, впрочем вопрос риторический.

Цитата:
Сообщение от Vant Посмотреть сообщение
Спасибо за ответы,но я все равно не могу вникнуть как мне написать
begin
отослать на usb порт данные
end
мде... оки, зайдем с другого боку. Что вы уже подключили или собираетесь подключать в USB-порт?

Добавлено
...даже не так (ибо первый пост и так ясен), как вы собираетесь и куда конкретно вы подключили "мотор"?

Потому как, если к шине питания USB или дата-пинам, то снова вас отошлю к моей третьей ссылке первой страницы к тексту "Немножко предыстории, или отвлечемся...", написано как раз для таких случаев.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 22.05.2013 в 22:43.
raxp вне форума Ответить с цитированием
Старый 22.05.2013, 22:39   #8
Vant
Новичок
Джуниор
 
Регистрация: 22.05.2013
Сообщений: 5
По умолчанию

Я не чего не подключал,задание чисто абстрактное.
Представим:Имеем машинку с 2 двиг рулевой и ходовой,то есть она умеет ездить вперед,назад,влево,вправо.
Необходимо в делфи создать 4 кнопки соответственно.
Чтобы при нажатии она ехала в нужно направление.
Мне бы примерный код программы,что там якобы должно быть,именно код при нажатии на кнопку.
Просто я в этом профан...
Vant вне форума Ответить с цитированием
Старый 22.05.2013, 23:08   #9
Vant
Новичок
Джуниор
 
Регистрация: 22.05.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
вас смутило похожее название? Неудобство API для быстрого старта конечного пользователя, впрочем вопрос риторический.


мде... оки, зайдем с другого боку. Что вы уже подключили или собираетесь подключать в USB-порт?

Добавлено
...даже не так (ибо первый пост и так ясен), как вы собираетесь и куда конкретно вы подключили "мотор"?

Потому как, если к шине питания USB или дата-пинам, то снова вас отошлю к моей третьей ссылке первой страницы к тексту "Немножко предыстории, или отвлечемся...", написано как раз для таких случаев.
Ну допустим на заводе каким-то боком собрали эту машинку,и нам необходимо ее подключить.
Мне бы просто вы сказали как написать это на языке программирования,а конкретно.
Нажали кнопку 1
выполнить действие вперед
нажали кнопку 2
выполнить назад
нажали 3
влево
нажали 4
вправо.
Мне просто код примерно оформленный ,он даже может и не работать,это для устного ответа в универе запарился)).
Vant вне форума Ответить с цитированием
Старый 22.05.2013, 23:09   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Да, вы профан и смотрю гордитесь этим. Но ведь читать русским по-белому вы умеете? Оки, еще ссыль.

Цитата:
Представим:Имеем машинку с 2 двиг рулевой и ходовой,то есть она умеет ездить вперед,назад,влево,вправо.
Необходимо в делфи создать 4 кнопки соответственно.
Чтобы при нажатии она ехала в нужно направление.
Мне бы примерный код программы,что там якобы должно быть,именно код при нажатии на кнопку.
программа сама по себе управлять не может, ей надо железо, тупое или интеллектуальное. Вот у вас есть машинка, это вы хорошо представили. Теперь вы хотите ею управлять по USB. Оки, контроллер у вас есть? Есть то самое железо, которое будет транслировать команды верхнего уровня с Delphi (да не важно с чего, хоть с батника) на нижний уровень? Нет. Тогда о чем мы тут беседуем? Как вы собрались подключать к USB ваш мотор? Тут нужен контроллер + силовой драйвер. Под интеллектуальный контроллер нужна прошивка, т.е. программа нижнего уровня. Программировать умеете?

Если нет, тогда вам нужен тупой аппаратный контроллер. У вас есть конвертор USB/UART? Нет. Впрочем, чего это распинаюсь, это все уже расписано по третьей ссылке. Ферштеен?

Цитата:
это для устного ответа в универе запарился)).
боже...

Лови:
Код:
WriteFile()
А если бы удосужился взглянуть по первой ссылке, то есть и абстракция уже оформленная:
Цитата:
Библиотека HIDOUTEX.dll позволяет, независимое от записи, чтение любого заданного HID-устройства. Таким образом, вы можете управлять выходами одного заданного HID-устройства и считывать параметры с него же или с другого HID-устройства. К примеру, подключив к USB портам ПК/ноутбука/нетбука uniUSB и HID-термометр можно осуществить управление одним, считывая показания другого через одну функцию в один момент времени.


Пример динамического подключения (Delphi 6/7/2006/2009/2010/TDL):
Код:
var
 leds: byte; // значение байта данных на МК
 
  setget_leds:function(outvid, outpid: integer; outleds: byte;
                       invid, inpid: integer; var inleds: longword):pchar;stdcall;
  LibHandle: THandle;


{ установка любого бита в байте }
function SetBit(AWord: longword; ABit: byte; AState: boolean = true): longword;
begin
 if AState then Result:= AWord or (1 shl ABit)
  else Result:= AWord and (not (1 shl ABit))
end;

function LinkProc(ProcName: string):Pointer;
begin
 result:= GetProcAddress(LibHandle,PChar(ProcName))
end;

{ инициализация }
begin
 LibHandle:= LoadLibrary('hidoutex.dll');
 if LibHandle<>0 then
  setget_leds:= LinkProc('setget_leds');
end;

{ пример вызова (записи) }
var rd: cardinal;
begin
 // управление выходами
 setget_leds($0207, $2010, inleds, $0, $3, rd);
 
 // параметр чтения температуры 
 caption:= rd - 273 + 3;
 ...

{ ПОРЯДОК ИСПОЛЬЗОВАНИЯ }

 // допустим нужно зажечь нулевой бит (установить в "1"), что соответствует порту PB0 (выв.14 МК)
 // тогда пользуемся функцией SetBit() и передадим значение байта в функцию setleds()
 leds:= SetBit(leds, 0, true)
 setleds($0207, $2010, leds, $0, $0, rd)
 ...
 // допустим нужно погасить нулевой бит (установить в "0"), что соответствует порту PB0 (выв.14 МК)
 // тогда пользуемся функцией SetBit() и передадим значение байта в функцию setleds()
 leds:= SetBit(leds, 0, false)
 setleds($0207, $2010, leds, $0, $0, rd)
 ...
 // допустим нужно зажечь первый бит (установить в "1"), что соответствует порту PB1 (выв.15 МК)
 // тогда пользуемся функцией SetBit() и передадим значение байта в функцию setleds()
 leds:= SetBit(leds, 1, true)
 setleds($0207, $2010, leds, $0, $0, rd)
 ...
 

{ END ПОРЯДОК ИСПОЛЬЗОВАНИЯ }
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 22.05.2013 в 23:14.
raxp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли соединить 2 компа кабелем USB-USB? Ghost3 Компьютерное железо 21 06.08.2014 09:22
Управление питанием USB порта gembit Win Api 8 02.11.2011 17:59
Написать управление USB-ракетницей Wrun Общие вопросы Delphi 6 31.05.2011 17:05
USB: Управление э. схемами? saggy Компьютерное железо 18 12.07.2010 18:02