Дискретный вход или кнопка через USB

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Родился
Сообщения: 4
Зарегистрирован: Чт апр 30, 2015 07:41:03

Сообщение Studentik »

Добрый день! Подскажите, мне нужно купить/спаять такой девайс, который с одной стороны вставляется в usb порт, с другой стороны из него торчат два проводочка, и чтобы я мог замыкая эти проводочки(или подавая на них напряжение), изменять значение переменной в моей программе (delphi) с 0 на 1. Насколько я понимаю, это не трудно, в интернете нашел много по теме, но такие простые задачки там никто не рассматривал. Вопрос, как сделать такую штуку максимально просто!? Можно ли это сделать без применения микроконтроллеров? Заранее спасибо!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo

Сообщение m.ix »

как минимум нужен АЦП и МК
замыкая проводочки, спалите свой USB порт как минимум, как максимум мост.
Лечу лечить WWWашу покалеченную технику.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 26671
Зарегистрирован: Пт май 18, 2007 22:56:58

Сообщение Upgrader »

Да ладно, всё просто.
Купить можно дата кабель для старых телефонов типа сименса. Спаять самому - на микросхеме FT232 (см.гугл). Смысл один - они превращают USB в виртуальный COM порт и UART (в гугл). Как с этим работать - от элементарного замыкания входа и выхода и отслеживания эхо (да, так можно!), до подачи на компьютер сигнала с МК (так можно хоть 100 кнопок сделать).

Короче, вот вам максимально простой вариант. Берете дата кабель телефона, находите по распиновке там RX и TX выводы, и тупо замыкайте их. А в своей программе на Delphi учитесь посылать и принимать команды по COM порту - это довольно просто делается, примеры должны быть. Отправляете что-то, если оно возвращается - значит замкнуто, не возвращается - разомкнуто.

Теоретически, если подумать... можно поизвращаться над USB портом... подключив в него резистор. Комп будет думать что подключено неизвестное неопознанное оборудование. Отследить это подключение каким-то образом... Но это по моему извращение, хотя может оказаться довольно простой вариант.
Не променяю медь на ржавую несгорайку!
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Studentik писал(а):Подскажите, мне нужно купить/спаять такой девайс, который с одной стороны вставляется в usb порт, с другой стороны из него торчат два проводочка
Спаять можно по этой схеме. http://purebasic.mybb.ru/viewtopic.php?id=211
Там есть кнопка SB1. Вместо нее подключается эти "два проводочка".
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 4
Зарегистрирован: Чт апр 30, 2015 07:41:03

Сообщение Studentik »

Спасибо за ответы, буду изучать микроконтроллеры :)
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

возьми плату от усб клавиатуры :idea:
тематические ответы только в форуме, в приват не пишите
Реклама
Прорезались зубы
Сообщения: 219
Зарегистрирован: Вт июл 02, 2013 09:17:49

Сообщение misyachniy »

Если кнопка одна, то можео обойтись переходником USB-COM.
Кнопка цепляется между RX-TX выводами.
В Делфи посылаете байт в порт.
Если посланый байт вернулся обратно - кнопка нажата.
Родился
Сообщения: 2
Зарегистрирован: Чт мар 13, 2014 02:02:27

Сообщение Eprst_Lalaikin »

У COM-порта кроме входа данных (TXD) есть еще целых 4 как раз "дискретных" входа: CTS, DSR, DCD, RI, а также 2 "дискретных" выхода RTS, DTR. Не все они могут быть реализованы в USB->COM переходнике, но CTS и RTS по идее должны. Например, в мануале от программатора Pony Prog, который использует COM-порт именно как двоичный ввод-вывод говорится, что "через адаптеры USB->COM может не работать или работать медленно". Лично мне пока не приходилось пользоваться переходничками для этого, только обычным COM-портом.
Я уже давненько не программил вантуз на эту тему, но в Win API это вроде выходит как то так:
GetCommModemStatus(HANDLE hPort, LPWORD lpstate) считывает в *lpstate байт состояния тех линий.
Можно обрабатывать изменение уровней сигналов как события с помощью:
SetCommMask
WaitCommEvent
В последний раз когда была подобная задачка я не заморачивался на Win API, а использовал библиотеку PySerial, т. к. все остальное у меня было на питоне.
Также есть ведь еще переходнички USB->LPT, а это где то 11 TTL линий ввода. Не могу сказать сходу как программить LPT, знаю только что для питона есть PyParallel от тех же авторов.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Можно использовать FT232R в bitbang-режиме. Там в документации все хорошо описано и даже пример есть.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Ответить

Вернуться в «Интеграция с ПК»