![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
Добрый день. Даже не знаю как правильно описать возникшую проблему. Постараюсь =)
Необходимо каким-то образом программно отследить подачу напряжения на USB порт. ОС - Windows. Т.е. должна быть программа крутящаяся на винде, которая "слушает" USB порт, и как только на контакты пришло напряжение, произвести некое действие. Подскажите пожалуйста, реально ли это? Какие есть варианты решения? Какие библиотеки могут помочь в этом? Я очень далек от программирования на таком низком уровне и из предположений только есть мысль, что надо установить драйвер USB->COM и там уже что-то ловить. Спасибо заранее. |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Без аппаратной части не обойтись. Просто так подавать напряжение на USB порт нельзя, там должны быть информационные посылки.
-------------------- Мне нужны помощники. |
|||
|
||||
Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
Mazzi, спасибо за ответ.
А аппаратная часть - это контроллер, да? А есть ли какие-нибудь типовые готовые решения для следующего: самая простейшая кнопка, при нажатии на нее замыкаются 2 контакта. При этом нужно послать какой-нибудь информационный сигнал по USB. |
|||
|
||||
mr_smit |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
Мне кажется ты не понимаешь что пишешь. Напряжение на USB разъёме есть всегда, даже при не подключенном устройстве. Возьми вольтметр и замерь, убедись (крайние контакты +/-). Там 5 вольт. ![]() Пиши конкретно что надо.
![]() Тебе сюда как минимум. Ну или сразу сюда. Это сообщение отредактировал(а) mr_smit - 16.6.2009, 21:21 |
||||
|
|||||
Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
mr_smit, правильно, я же сразу сказал, что не разбираюсь в этом, а перелопачивать гору литературы нет времени :(
Задача по сути простая: послать некоторые данные в USB порт, хотя бы 1 байт, чтобы потом программа смогла среагировать на это событие. Желательно обойтись без контроллера. Ведь наверняка можно установить драйвер USB->COM и как то сэмулировать подачу напряжения на одну из ножек порта. Что то я совсем запутался =) |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Простейшее решение для тебя это использовать микросхему CP2102, даташит на которую легко найти в интернете. Эта микросхема - преобразователь USB в UART. Затем подсоединяешь свою кнопку на её выводы RXD и TXD. Устанавливаешь драйвера, после чего у тебя появляется ещё один COM-порт. Затем в этот порт кидаешь байт, и если он через кнопку возвращается тебе назад, значит кнопка замкнута, если не возвращается, значит разомкнута. Схема во вложении, только кнопку не нарисовал. Удачи! Присоединённый файл ( Кол-во скачиваний: 128 ) ![]() -------------------- Мне нужны помощники. |
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
http://www.platan.ru/cgi-bin/qwery_i.pl?code=CP2102
99 руб схемка Mazzi стоит. Можешь ещё тут почитать: http://my-avr.at.ua/publ/1-1-0-27 Но для схемы Mazzi нужно драйвера устанавливать, а можно то же самое (для твоего случая) сделать без драйверов. Микросхема которая прикидывается HID устройством и выполняет те же задачи. Только можно: к любому компу подключил - и сразу работай. http://www.firmwarefactory.com/USB-232.aspx P.S. Правда насчет цены не уверен, может и дороже стоить. Это сообщение отредактировал(а) mr_smit - 17.6.2009, 12:30 |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
судя по ценам на Digikey USB-232 будет стоить около 250 рублей. Но вещь прикольная! ![]() -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
А вообще сейчас почитал про CP2102 классная вещь. Надо будет купить. И никаких тебе MAX232 не надо.
Кстати, Helmet, давай колись для чего тебе всё это нужно. Это сообщение отредактировал(а) mr_smit - 17.6.2009, 13:06 |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
mr_smit, есть еще FT232...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
Ого, загрузили информацией
![]() А хрен знает, на работе сказали "Для проекта нужно большую красную кнопку придумать чтоб жмякнул - и программа наша запустилась" ![]() Mazzi, mr_smit, cardinal, еще раз спасибо!!! Добавлено через 1 минуту и 1 секунду Ребята с кол-вом постов больше 100, поставьте плюсы парням плиз от меня ![]() |
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
||||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
||||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Я на ATMege8 не делал устройств для USB, но слышал отзывы, что работает очень плохо, через раз и к томуже обмен очень медленный.( это не относится к текущей теме кнопки )
-------------------- Мне нужны помощники. |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Ну нельзя же программно решить эффективно то, что по сути должно решаться аппаратно. Тем более, что у USB 2.0 очень неплохие скорости обмена данными...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
Helmet, тебе повезло что я болею и мне нечем дома заняться. По нажатию кнопки запускается Блокнот. Можно любое другое приложение. Грубо, на картонке, но зато работает. Если применить SMD детали размер получится ооочень маленький.
![]() Вот снял видео, всё выглядит/работает. Залил на 2 файлообменника. http://depositfiles.com/files/f3bn4o4ot http://narod.ru/disk/10012316000/hid.rar.html Только кнопку подключил не к РС0 (как изначально нарисовал), а к РВ1. Это сообщение отредактировал(а) mr_smit - 18.6.2009, 22:57 Присоединённый файл ( Кол-во скачиваний: 201 ) ![]() |
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
Прошивка для контроллера:
Это сообщение отредактировал(а) mr_smit - 18.6.2009, 17:11 Присоединённый файл ( Кол-во скачиваний: 111 ) ![]() |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
mr_smit, опиши пожалуйста в кратце принцип работы этого девайса.
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
Подключаем к ПК, устройство определилось как HID, установилось... и т.д. готово к работе. Далее устройство по запросу отсылает 0 или 1 в ПК в зависимости от состояния кнопки (0 или 1 на PINB.1). Потом просто раз в 100 мс (из Delphi) опрашивается контроллер на предмет нажатия кнопки. Уже в Delphi мы делаем то что нам надо, в данном случае открываем блокнот если пришла "единица". Может и криво, но я ставил целью результат. Работает. Доработать, что то улучшить всегда можно.
Можно таким же образом из МК температуру слать, данные АЦП и т.д., обрабатывать, строить графики и т.д. P.S. Даже видео никто ни разу не посмотрел, а я старался.... для себя! ![]() Это сообщение отредактировал(а) mr_smit - 18.6.2009, 22:49 |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 8 Всего: 99 |
Потому что на рапиду надо заливать... ![]() ![]() Ок, спасибо - принцип ясен. Я просто думал может там как-то хитро без отсылки данных сделано. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
mr_smit, ничего себе, спасибо! Я даже не рассчитывал больше чем на разъяснение. Круто!
|
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
Пришли календарик от лица фирмы
![]() |
|||
|
||||
tyum |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 18.9.2009 Репутация: нет Всего: нет |
Проститите за может быть глупый вопрос, но я тока учусь
![]() Вот я хочу сделать так, чтобы данные с термометра отправлялись в пзу. А потом при подключении сего устройства к компу по ЮЗБ, передавало из пзу данные в какую-н. БД. Вопрос: я могу работать с этим устройством как hid? |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Да, можешь. -------------------- Мне нужны помощники. |
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
Например при подключении к компьютеру он (компьютер) отправляет условную команду что готов принять данные. Контроллер отправляет их. И опять же условная команда завершения передачи. И в программе хоста сообщение типа "данные получены, устройство можно отключить".
P.S. Хост - это компьютер |
|||
|
||||
AlexART |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
mr_smit, Посмотрел твой код firmware - подскажи, пожалуйста, как передавать компьютеру число, а не бит. Или можно просто один за другим передавать биты, а в хосте собирать из них число?
|
|||
|
||||
mr_smit |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
Да. Ну придумай протокол
![]() Либо вот пример: USB HID термометр http://www.radiokot.ru/circuit/digital/pcmod/16/ в конце статьи есть исходник и для МК и для Delphi. P.S. Байт это собственно и есть число ![]() Я тут себе USB дисплей делал... посмотри, может будет интересно как с 2-х байтовыми числами работать Это сообщение отредактировал(а) mr_smit - 3.11.2010, 10:36 |
|||
|
||||
AlexART |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 1.11.2010 Репутация: нет Всего: нет |
ОК, спасибо)
Вроде, разобрался. Пишу свой вариант HID-термометра. Когда доделаю, пришлю - вдруг кому-то понадобится... |
|||
|
||||
JackA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 4.10.2010 Репутация: нет Всего: нет |
||||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
||||
|
||||
darksilence |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 26.11.2010 Репутация: нет Всего: нет |
Вопрос можно решить подключением кнопки в микрофонному входу звуковой карты. по схеме с подтяжкой на ноль. при нажатии на кнопку идет замыкание на +U.
Звуковая карта пропускает только переменную составляющую. Пример работы в Дельфе есть с микрофонным входом (типа осциллографа) можно замутить. будет дешевле всего. Хотя я больше поддерживаю проект USB-HID. |
|||
|
||||
KoTeKoT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 24.12.2010 Репутация: нет Всего: нет |
У меня тут вопрос образовался... извините если не туда пишу...
вот есть:
а как сделать обратно? Мол получили допустим 6, значит это 01100000, ну и желательно что б это "01100000"куданить в переменную записывалось или в Edit.Text выводилось или CheckBox'ы заполнялись... Это сообщение отредактировал(а) KoTeKoT - 22.3.2011, 19:46 |
|||
|
||||
UniBomb |
|
||||||||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
Наоборот, это будет равно 00000110
И в чём проблема?
Хотя наверное можно и без IntToStr, не знаю как там в делфях с неявным преобразованием.
|
||||||||
|
|||||||||
KoTeKoT |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 24.12.2010 Репутация: нет Всего: нет |
спасибо за ответ
прошу прощения, именно так и будет... не доглядел
так, да не так... IntToStr(6) в итоге в Edit.Text будет "6", а нужно именно "00000110", а без преобразования IntToStr ошибки вывалятся... С дальнейшим кодом (собственно с CheckBox'ами наиболее подходящий вариант для решения моей задачи)
разбираюсь, попозжей отпишусь подошло иль нет ;) |
||||||||
|
|||||||||
UniBomb |
|
|||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
В делфи есть куча преобразовательных функций имеющий похожий вид. Например IntToStr, IntToHex, IntToBin, и наоборот. Вам будет полезно изучить их, найдя всю необходимую информацию в хелпе. Для преобразования в вид "00000110" надо воспользоваться функцией IntToBin. |
|||
|
||||
KoTeKoT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 24.12.2010 Репутация: нет Всего: нет |
Спасибо, за подсказку, но поскольку в Delphi отсутствует функция IntToBin , нашел ее реализацию. Мож кому понадобится:
P.S. Вопрос снят Это сообщение отредактировал(а) KoTeKoT - 24.3.2011, 01:36 |
|||
|
||||
UniBomb |
|
|||
Новичок ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 1754 Регистрация: 24.10.2006 Где: Санкт-Петербург Репутация: 9 Всего: 97 |
Странно. В билдере мне иногда приходилось использовать эту функцию. А ведь в билдере почти всё из делфей и перекочёвывает ![]() |
|||
|
||||
alexzzzz2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 23.3.2010 Репутация: нет Всего: нет |
файл исходников пишет вирус, еще вопрос, кто делал hid примеры еще? стучите в скайп solarstation2 так как быстрее выйдет
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |