Перейти к содержанию
    

Подключение простейшего устр-ва через COM или USB

Кто может, дайти пожайлуста ответ на дурацкий, но насущный для меня вопрос :

Cложно ли подключить к PC некое устройство, выдающее в зависимости от того какая нажата на нем кнопка (от 1 до 3), на выходе различный электрический потенциал. Задача анализировать программой приходящий сигнал на COM или USB, с целью узнать какая же кнопка нажата на устройстве. PC должно работать под WIN98-XP. Я не системный программист и не изготавливал никогда железки, работаю сисадмином и знаком по долгу службы только с прикладным высокоуровневым программированием. Вопрос в том, насколько это сложно реализовать своими силами (нужно ли писать для этого драйвер) и что делать с аппаратной частью. Можно ли отделаться каким нибудь преобразователем электр. сигналов в COM логику и програмкой чтения данных из порта, написанной например на Delphi ? Или все сложнее?

Помогите теоретически или практически!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Драйверов для работы с последовательными портами в Windows не нужно, всё доступно через WinAPI. Железо - любой микроконтроллер (лучше, если он будет иметь на борту аппаратный UART), плюс микросхема-преобразователь уровней для согласования электрических параметров м/к и RS-232, или схема на паре транзисторов, выполняющая те же функции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кнопки всего три? В принципе можно подключить эти кнопки через пару резисторов к COM-порту и считывать его состояния напрямую. Под FreeBSD — пара строчек кода, под виндой не знаю, я её последний раз видел, когда она была версии 3.1. :)

 

Но вообще задам филосовский вопрос: а зачем делать, когда на рынке полно устройств в духе игровых USB джойстиков и прочих цифровых клавиатур?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно вобще упрстить железо, если использовать игровой порт либо микрофонный вход, и для них так же не надо писать спец. дрова, но в во втором случае необходим звуковой генератор с возможностью перестройки в голосовом диапазоне - это всетаки достаточно сложно!

А вот в первом случае необходжимо всеголишь N кнопок и резисторов разных потенциалов, которые подключаются к аналоговым входам игрового порта (устроенно на принцйипе управления самой ручкой джостика) - вот и всё железо!

Решать ВАМ! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С USB просто без паяльника не получится. Это как минимум связка: микросхема USB - UART моста плюс микроконтроллер либо мост USB - параллельный интерфейс. Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый).

Вариант с COM портом - проще, но если уж искать наиболее простой вариант - я бы использовал LPT. В самом простом варианте - кнопки можно вешать почти прямо на разъем.

Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что бы подключить 3 кнопки к СОМ-порту достаточно использовать 3 сингнала CTS, DSR, и DCD (это входы). Вешаем на них по кнопке, вторые концы которых объеденены и подключены, скажем, к RTS. Входы CTS, DSR и DCD подтягиваем через резисторы к сигналу TDX. Вот и все.

Для того, что бы все это стало работать необходимо из программы (после открытия порта) установить значение сигнала RTS = '0'. После этого, при нажатии на кнопки соотв. сигнал CTS, DST и/или DCD будет равен "0". Если ни одна не нажата, то - "1".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С USB просто без паяльника не получится. Это как минимум связка: микросхема USB - UART моста плюс микроконтроллер либо мост USB - параллельный интерфейс. Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый).

Можно использовать готовый микроконтроллер (я когда делаю нечто подобное ставлю Сypress AN2135SC) и не надо не каких преобразователей

USB - UART, USB - параллельный интерфейс.

Вариант с COM портом - проще, но если уж искать наиболее простой вариант - я бы использовал LPT. В самом простом варианте - кнопки можно вешать почти прямо на разъем.

C LPT портом будет проще если вы работаете в WIN98, а вот в win2000,XP будет далеко не проще т.к. LPT защищён и обращаться к нему можно только через драйвер который вам придётся написать.

Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый).

Объясните мне пожалуста зачем для трёх кнопок писать драйвер :blink:

Если можно пользоватся HID .

Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй

Ну и как вы это сделаете. Если раздраконить мышку и подключить к компу это всё равно что подключить две мышки к одному компу. (даже раздраконенная мышка всё равно остаётся мышкой :laugh: )

Что бы подключить 3 кнопки к СОМ-порту достаточно использовать 3 сингнала CTS, DSR, и DCD (это входы). Вешаем на них по кнопке, вторые концы которых объеденены и подключены, скажем, к RTS. Входы CTS, DSR и DCD подтягиваем через резисторы к сигналу TDX. Вот и все.

Вариант простой но достаточно ненадёжный т.к. при замыкании одной кнопки

потенциал на этом входе ~+12V

при замыкании двух на обоих входах будет +6V

и трёх +3V

т.е. при замыкании трёх кнопок (одновременно!!) возможно не срабатывание.

 

 

IGS если вас интересует как это сделать могу дать пример готовой программы для Сypress и для PC . Если вы живёте в Одессе могу подогнать нашару печатную плату :cheers: . Могу подогнать и элементы но уже не нашару :laugh:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С USB просто без паяльника не получится. Это как минимум связка: микросхема USB - UART моста плюс микроконтроллер либо мост USB - параллельный интерфейс. Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый).

Можно использовать готовый микроконтроллер (я когда делаю нечто подобное ставлю Сypress AN2135SC) и не надо не каких преобразователей

USB - UART, USB - параллельный интерфейс.

Давайте подумаем что проще для простого человека - поставить микросхему USB моста и взять готовые дрова виртуального COM порта или брать Cypress с его обвязкой, писать к нему программу, опять же, ковыряться с дровами???

 

Вариант с COM портом - проще, но если уж искать наиболее простой вариант - я бы использовал LPT. В самом простом варианте - кнопки можно вешать почти прямо на разъем.

C LPT портом будет проще если вы работаете в WIN98, а вот в win2000,XP будет далеко не проще т.к. LPT защищён и обращаться к нему можно только через драйвер который вам придётся написать.

Умные люди уже давно написали не одну программу для работы с портами под win2000,ХР

 

Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый).

Объясните мне пожалуста зачем для трёх кнопок писать драйвер :blink:

Если можно пользоватся HID.

Поясняю: драйвер - не для 3-х кнопок, а для моста. Если интересуют подробности: www.ftdichip.com

 

Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй

Ну и как вы это сделаете. Если раздраконить мышку и подключить к компу это всё равно что подключить две мышки к одному компу. (даже раздраконенная мышка всё равно остаётся мышкой :laugh: )

Да, С USB мышкой много каши не сваришь. А мыши для COM уже вышли из моды и о них подумать забыли?

 

 

IGS если вас интересует как это сделать могу дать пример готовой программы для Сypress и для PC . Если вы живёте в Одессе могу подогнать нашару печатную плату :cheers: . Могу подогнать и элементы но уже не нашару :laugh:

 

Я думаю, что вариант c USB мостом будет не только проще, но еще и дешевле (правда за исключением того варианта если IGS из Одессы, а Pahuchy все подгонит нашару) :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

писать к нему программу, опять же, ковыряться с дровами???

 

Ещё раз повторюсь не с какими дровами ковырятся не надо.

Программа со стороны хоста будет состоять из 10 строк. при этом будут использоваться стандартные функции чтения/запись файла.

Если вы не поняли поищите в интернете что такое HID(Human Interface Device ) .

Я это говорю не с потолка (делал сам)

 

Умные люди уже давно написали не одну программу для работы с портами под win2000,ХР

 

Это да . Если устройство необходимо использовать только для себя. Иначе теряется универсальность. Т.е. это устройство не будет работать с другими компами пока вы не установите на них "программу для работы с портами под win2000,ХР " которую написали умные люди.

 

Да, С USB мышкой много каши не сваришь. А мыши для COM уже вышли из моды и о них подумать забыли?

 

Ещё раз повторюсь какая бы мышка не была (COM, PS/2, USB) она останется мышкой и компутер будет видеть её как мышку а не как три кнопки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это да . Если устройство необходимо использовать только для себя. Иначе теряется универсальность.  Т.е. это устройство не будет работать  с другими компами пока вы не установите на них  "программу для работы с портами под win2000,ХР " которую написали умные люди.

Никакую программу ставить не нужно. Все необходимые манипуляции - это подключение нужной dll к своему коду и пара вызовов функций для записи регистров данных LPT порта и чтения регистра состояния порта :smile3046: . При этом аппаратное обеспечение остается минимальным: разъем DB-25, несколько резисторов и те самые 3 кнопки. И никаких Cypress'ов, и программ для них. Поймите: я не против Вашего предложения. Я бы на месте IGS, так бы и поступил. Но учитывая, что IGS: "не изготавливал никогда железки, работаю сисадмином и знаком по долгу службы только с прикладным высокоуровневым программированием", я и советую наиболее безболезненный вариант.

 

Ещё раз повторюсь какая бы мышка не была (COM, PS/2, USB) она останется мышкой и компутер будет видеть её как мышку а не как три кнопки.

Соглашусь, что эта задача слишком сложна для человека не работавшего с железом, тем более, что даже у Вас вызывает такое недоумение. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем кто отозвался! Я понял что работать в моем случае все таки легче с COM. Созрел уточняющий вопрос! Упростим задачу еще : есть устройство на котором размещена допустим всего ОДНА кнопка. При нажатии кнопки на 2-х выходных проводах устройства сигнал +12V. Можно ли этот потенциал напрямую подавать на вход DSR,CTS или любой другой вход COM?

Какова допустимая сила тока? Обнулится ли входная 1 если сигнал перестать подавать или это нужно делать программно? 

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как Вы сами заметили DSR и CTS входы, поэтому больший ток чем они могут принять они не примут (обычно несколько десятков мкА). Если вы уверены, что Ваш сигнал +12V, не скакнет вольт эдак до 20, то можете подключать напрямую.

Обнулится ли входная 1 если сигнал перестать подавать или это нужно делать программно? 

Ну во первых, если мне не изменяет память +12В - это "0", а -12В - это "1". (поправьте если не прав). Далее.

Все завит от того КАК Вы перестанете подавать Ваши 12V. Если просто оборвете цепь, то входы все равно, будут считать что на них +12В. Поэтому надо +12В менять на -12В. И программно делать ничего не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Благодорю за внятное пояснение. В принципе все понял, но рескну задать еще вопрос на туже тему. Во первых если можно то поточнее о максимальном токе, чтобы не спалить COM. А во вторых опишу предполагаемый алгоритм работы устройства и анализа сигналов. Пользователь нажимает условное кол-во раз данную кнопку. Считаем например, что 3 нажатия  кнопки в течении 30 секунд считаются срабатыванием и сигналом программе для "принятия действий". Как мне видится я например, в потоке анализирую состояние COM (допустим CTS), если там 1,  обнуляю счетчик срабатываний "Count", обнуляю из программы CTS=0, запускаю таймер на 30 сек, прибавляю срабатывания : Count=Count+1, жду следующей 1, добавляю к счетчику, обнуляю итак 30 сек. Если 3 срабатывания за 30 сек, все OK!, иначе выключить таймер, продолжать анализировать и т.д.

Насколько такая теория может совпасть с практикой, пока проводов не поял и кода не писал.

 

 

 

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу Вас разочаровать - за одно нажатие кнопки ваш count насчитает нажатий эдак 200-300 если не больше. Дребезг контактов, батенька. Поэтому Вам предется усложнить алгоритм и программно бороться с дребезгом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот в первом случае необходжимо всеголишь N кнопок и резисторов разных потенциалов, которые подключаются к аналоговым входам игрового порта (устроенно на принцйипе управления самой ручкой джостика) - вот и всё железо!

Ребята, а можно про игровой порт поподробнее - где какие выводы, куда и что мона подавать? :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...