|
Модераторы: 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 ) USB_UART.GIF 8,91 Kb -------------------- Мне нужны помощники. |
|||
|
||||
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 ) USB_HID_Delphi.rar 176,83 Kb |
|||
|
||||
mr_smit |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 27.2.2008 Где: Самара Репутация: 1 Всего: 4 |
Прошивка для контроллера:
Это сообщение отредактировал(а) mr_smit - 18.6.2009, 17:11 Присоединённый файл ( Кол-во скачиваний: 111 ) firmware.rar 98,23 Kb |
|||
|
||||
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 |
Да. Ну придумай протокол Например, если приняли два нулевых байта -> значит следующие 1-2 байта это число (целая и дробная часть например). И с ними работай дальше.
Либо вот пример: USB HID термометр http://www.radiokot.ru/circuit/digital/pcmod/16/ в конце статьи есть исходник и для МК и для Delphi. P.S. Байт это собственно и есть число 0хFF -> 255 -> 11111111, 0хFFFF -> 65535 -> 1111111111111111 Я тут себе 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. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |