Дискретный вход или кнопка через USB
- Сообщения: 4
- Зарегистрирован: Чт апр 30, 2015 07:41:03
Добрый день! Подскажите, мне нужно купить/спаять такой девайс, который с одной стороны вставляется в usb порт, с другой стороны из него торчат два проводочка, и чтобы я мог замыкая эти проводочки(или подавая на них напряжение), изменять значение переменной в моей программе (delphi) с 0 на 1. Насколько я понимаю, это не трудно, в интернете нашел много по теме, но такие простые задачки там никто не рассматривал. Вопрос, как сделать такую штуку максимально просто!? Можно ли это сделать без применения микроконтроллеров? Заранее спасибо!
- Реклама
как минимум нужен АЦП и МК
замыкая проводочки, спалите свой USB порт как минимум, как максимум мост.
замыкая проводочки, спалите свой USB порт как минимум, как максимум мост.
Лечу лечить WWWашу покалеченную технику.
- Сообщения: 26671
- Зарегистрирован: Пт май 18, 2007 22:56:58
Да ладно, всё просто.
Купить можно дата кабель для старых телефонов типа сименса. Спаять самому - на микросхеме FT232 (см.гугл). Смысл один - они превращают USB в виртуальный COM порт и UART (в гугл). Как с этим работать - от элементарного замыкания входа и выхода и отслеживания эхо (да, так можно!), до подачи на компьютер сигнала с МК (так можно хоть 100 кнопок сделать).
Короче, вот вам максимально простой вариант. Берете дата кабель телефона, находите по распиновке там RX и TX выводы, и тупо замыкайте их. А в своей программе на Delphi учитесь посылать и принимать команды по COM порту - это довольно просто делается, примеры должны быть. Отправляете что-то, если оно возвращается - значит замкнуто, не возвращается - разомкнуто.
Теоретически, если подумать... можно поизвращаться над USB портом... подключив в него резистор. Комп будет думать что подключено неизвестное неопознанное оборудование. Отследить это подключение каким-то образом... Но это по моему извращение, хотя может оказаться довольно простой вариант.
Купить можно дата кабель для старых телефонов типа сименса. Спаять самому - на микросхеме FT232 (см.гугл). Смысл один - они превращают USB в виртуальный COM порт и UART (в гугл). Как с этим работать - от элементарного замыкания входа и выхода и отслеживания эхо (да, так можно!), до подачи на компьютер сигнала с МК (так можно хоть 100 кнопок сделать).
Короче, вот вам максимально простой вариант. Берете дата кабель телефона, находите по распиновке там RX и TX выводы, и тупо замыкайте их. А в своей программе на Delphi учитесь посылать и принимать команды по COM порту - это довольно просто делается, примеры должны быть. Отправляете что-то, если оно возвращается - значит замкнуто, не возвращается - разомкнуто.
Теоретически, если подумать... можно поизвращаться над USB портом... подключив в него резистор. Комп будет думать что подключено неизвестное неопознанное оборудование. Отследить это подключение каким-то образом... Но это по моему извращение, хотя может оказаться довольно простой вариант.
Не променяю медь на ржавую несгорайку!
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Спаять можно по этой схеме. http://purebasic.mybb.ru/viewtopic.php?id=211Studentik писал(а):Подскажите, мне нужно купить/спаять такой девайс, который с одной стороны вставляется в usb порт, с другой стороны из него торчат два проводочка
Там есть кнопка SB1. Вместо нее подключается эти "два проводочка".
- Сообщения: 4
- Зарегистрирован: Чт апр 30, 2015 07:41:03
- Реклама
- Сообщения: 13796
- Зарегистрирован: Чт сен 20, 2007 14:08:00
возьми плату от усб клавиатуры 
тематические ответы только в форуме, в приват не пишите
- Сообщения: 219
- Зарегистрирован: Вт июл 02, 2013 09:17:49
Если кнопка одна, то можео обойтись переходником USB-COM.
Кнопка цепляется между RX-TX выводами.
В Делфи посылаете байт в порт.
Если посланый байт вернулся обратно - кнопка нажата.
Кнопка цепляется между RX-TX выводами.
В Делфи посылаете байт в порт.
Если посланый байт вернулся обратно - кнопка нажата.
- Сообщения: 2
- Зарегистрирован: Чт мар 13, 2014 02:02:27
У 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 от тех же авторов.
Я уже давненько не программил вантуз на эту тему, но в Win API это вроде выходит как то так:
GetCommModemStatus(HANDLE hPort, LPWORD lpstate) считывает в *lpstate байт состояния тех линий.
Можно обрабатывать изменение уровней сигналов как события с помощью:
SetCommMask
WaitCommEvent
В последний раз когда была подобная задачка я не заморачивался на Win API, а использовал библиотеку PySerial, т. к. все остальное у меня было на питоне.
Также есть ведь еще переходнички USB->LPT, а это где то 11 TTL линий ввода. Не могу сказать сходу как программить LPT, знаю только что для питона есть PyParallel от тех же авторов.


