|
Подключение простейшего устр-ва через COM или USB |
|
|
|
Apr 13 2005, 20:06
|
Группа: Новичок
Сообщений: 3
Регистрация: 13-04-05
Пользователь №: 4 108

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

Группа: Свой
Сообщений: 26
Регистрация: 6-02-05
Пользователь №: 2 455

|
С USB просто без паяльника не получится. Это как минимум связка: микросхема USB - UART моста плюс микроконтроллер либо мост USB - параллельный интерфейс. Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый). Вариант с COM портом - проще, но если уж искать наиболее простой вариант - я бы использовал LPT. В самом простом варианте - кнопки можно вешать почти прямо на разъем. Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй
|
|
|
|
|
Apr 14 2005, 07:08
|
Местный
  
Группа: Свой
Сообщений: 252
Регистрация: 29-12-04
Пользователь №: 1 728

|
Что бы подключить 3 кнопки к СОМ-порту достаточно использовать 3 сингнала CTS, DSR, и DCD (это входы). Вешаем на них по кнопке, вторые концы которых объеденены и подключены, скажем, к RTS. Входы CTS, DSR и DCD подтягиваем через резисторы к сигналу TDX. Вот и все. Для того, что бы все это стало работать необходимо из программы (после открытия порта) установить значение сигнала RTS = '0'. После этого, при нажатии на кнопки соотв. сигнал CTS, DST и/или DCD будет равен "0". Если ни одна не нажата, то - "1".
|
|
|
|
|
Apr 15 2005, 08:19
|
Участник

Группа: Свой
Сообщений: 74
Регистрация: 30-03-05
Из: Одесса
Пользователь №: 3 796

|
Цитата С USB просто без паяльника не получится. Это как минимум связка: микросхема USB - UART моста плюс микроконтроллер либо мост USB - параллельный интерфейс. Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый). Можно использовать готовый микроконтроллер (я когда делаю нечто подобное ставлю Сypress AN2135SC) и не надо не каких преобразователей USB - UART, USB - параллельный интерфейс. Цитата Вариант с COM портом - проще, но если уж искать наиболее простой вариант - я бы использовал LPT. В самом простом варианте - кнопки можно вешать почти прямо на разъем. C LPT портом будет проще если вы работаете в WIN98, а вот в win2000,XP будет далеко не проще т.к. LPT защищён и обращаться к нему можно только через драйвер который вам придётся написать. Цитата Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый). Объясните мне пожалуста зачем для трёх кнопок писать драйвер Если можно пользоватся HID . Цитата Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй Ну и как вы это сделаете. Если раздраконить мышку и подключить к компу это всё равно что подключить две мышки к одному компу. (даже раздраконенная мышка всё равно остаётся мышкой  ) Цитата Что бы подключить 3 кнопки к СОМ-порту достаточно использовать 3 сингнала CTS, DSR, и DCD (это входы). Вешаем на них по кнопке, вторые концы которых объеденены и подключены, скажем, к RTS. Входы CTS, DSR и DCD подтягиваем через резисторы к сигналу TDX. Вот и все. Вариант простой но достаточно ненадёжный т.к. при замыкании одной кнопки потенциал на этом входе ~+12V при замыкании двух на обоих входах будет +6V и трёх +3V т.е. при замыкании трёх кнопок (одновременно!!) возможно не срабатывание. IGS если вас интересует как это сделать могу дать пример готовой программы для Сypress и для PC . Если вы живёте в Одессе могу подогнать нашару печатную плату  . Могу подогнать и элементы но уже не нашару
|
|
|
|
|
Apr 15 2005, 21:16
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 6-02-05
Пользователь №: 2 455

|
Цитата(Pahuchy @ Apr 15 2005, 11:19) Цитата С USB просто без паяльника не получится. Это как минимум связка: микросхема USB - UART моста плюс микроконтроллер либо мост USB - параллельный интерфейс. Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый). Можно использовать готовый микроконтроллер (я когда делаю нечто подобное ставлю Сypress AN2135SC) и не надо не каких преобразователей USB - UART, USB - параллельный интерфейс. Давайте подумаем что проще для простого человека - поставить микросхему USB моста и взять готовые дрова виртуального COM порта или брать Cypress с его обвязкой, писать к нему программу, опять же, ковыряться с дровами??? Цитата Цитата Вариант с COM портом - проще, но если уж искать наиболее простой вариант - я бы использовал LPT. В самом простом варианте - кнопки можно вешать почти прямо на разъем. C LPT портом будет проще если вы работаете в WIN98, а вот в win2000,XP будет далеко не проще т.к. LPT защищён и обращаться к нему можно только через драйвер который вам придётся написать. Умные люди уже давно написали не одну программу для работы с портами под win2000,ХР Цитата Цитата Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый). Объясните мне пожалуста зачем для трёх кнопок писать драйвер Если можно пользоватся HID. Поясняю: драйвер - не для 3-х кнопок, а для моста. Если интересуют подробности: www.ftdichip.com Цитата Цитата Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй Ну и как вы это сделаете. Если раздраконить мышку и подключить к компу это всё равно что подключить две мышки к одному компу. (даже раздраконенная мышка всё равно остаётся мышкой  ) Да, С USB мышкой много каши не сваришь. А мыши для COM уже вышли из моды и о них подумать забыли? Цитата IGS если вас интересует как это сделать могу дать пример готовой программы для Сypress и для PC . Если вы живёте в Одессе могу подогнать нашару печатную плату  . Могу подогнать и элементы но уже не нашару  Я думаю, что вариант c USB мостом будет не только проще, но еще и дешевле (правда за исключением того варианта если IGS из Одессы, а Pahuchy все подгонит нашару)
|
|
|
|
|
Apr 18 2005, 15:01
|
Участник

Группа: Свой
Сообщений: 74
Регистрация: 30-03-05
Из: Одесса
Пользователь №: 3 796

|
Цитата писать к нему программу, опять же, ковыряться с дровами??? Ещё раз повторюсь не с какими дровами ковырятся не надо. Программа со стороны хоста будет состоять из 10 строк. при этом будут использоваться стандартные функции чтения/запись файла. Если вы не поняли поищите в интернете что такое HID(Human Interface Device ) . Я это говорю не с потолка (делал сам) Цитата Умные люди уже давно написали не одну программу для работы с портами под win2000,ХР Это да . Если устройство необходимо использовать только для себя. Иначе теряется универсальность. Т.е. это устройство не будет работать с другими компами пока вы не установите на них "программу для работы с портами под win2000,ХР " которую написали умные люди. Цитата Да, С USB мышкой много каши не сваришь. А мыши для COM уже вышли из моды и о них подумать забыли? Ещё раз повторюсь какая бы мышка не была (COM, PS/2, USB) она останется мышкой и компутер будет видеть её как мышку а не как три кнопки.
|
|
|
|
|
Apr 18 2005, 16:18
|
Участник

Группа: Свой
Сообщений: 26
Регистрация: 6-02-05
Пользователь №: 2 455

|
Цитата(Pahuchy @ Apr 18 2005, 18:01) Это да . Если устройство необходимо использовать только для себя. Иначе теряется универсальность. Т.е. это устройство не будет работать с другими компами пока вы не установите на них "программу для работы с портами под win2000,ХР " которую написали умные люди. Никакую программу ставить не нужно. Все необходимые манипуляции - это подключение нужной dll к своему коду и пара вызовов функций для записи регистров данных LPT порта и чтения регистра состояния порта  . При этом аппаратное обеспечение остается минимальным: разъем DB-25, несколько резисторов и те самые 3 кнопки. И никаких Cypress'ов, и программ для них. Поймите: я не против Вашего предложения. Я бы на месте IGS, так бы и поступил. Но учитывая, что IGS: "не изготавливал никогда железки, работаю сисадмином и знаком по долгу службы только с прикладным высокоуровневым программированием", я и советую наиболее безболезненный вариант. Цитата Ещё раз повторюсь какая бы мышка не была (COM, PS/2, USB) она останется мышкой и компутер будет видеть её как мышку а не как три кнопки. Соглашусь, что эта задача слишком сложна для человека не работавшего с железом, тем более, что даже у Вас вызывает такое недоумение.
|
|
|
|
|
Apr 20 2005, 09:45
|
Группа: Новичок
Сообщений: 3
Регистрация: 13-04-05
Пользователь №: 4 108

|
Цитата(IGS @ Apr 13 2005, 23:06) Спасибо всем кто отозвался! Я понял что работать в моем случае все таки легче с COM. Созрел уточняющий вопрос! Упростим задачу еще : есть устройство на котором размещена допустим всего ОДНА кнопка. При нажатии кнопки на 2-х выходных проводах устройства сигнал +12V. Можно ли этот потенциал напрямую подавать на вход DSR,CTS или любой другой вход COM? Какова допустимая сила тока? Обнулится ли входная 1 если сигнал перестать подавать или это нужно делать программно?
|
|
|
|
|
Apr 20 2005, 10:29
|

Знающий
   
Группа: Модераторы
Сообщений: 804
Регистрация: 1-12-04
Пользователь №: 1 283

|
Как Вы сами заметили DSR и CTS входы, поэтому больший ток чем они могут принять они не примут (обычно несколько десятков мкА). Если вы уверены, что Ваш сигнал +12V, не скакнет вольт эдак до 20, то можете подключать напрямую. Цитата Обнулится ли входная 1 если сигнал перестать подавать или это нужно делать программно? Ну во первых, если мне не изменяет память +12В - это "0", а -12В - это "1". (поправьте если не прав). Далее. Все завит от того КАК Вы перестанете подавать Ваши 12V. Если просто оборвете цепь, то входы все равно, будут считать что на них +12В. Поэтому надо +12В менять на -12В. И программно делать ничего не надо.
--------------------
Иван Сусанин - первый полупроводник
|
|
|
|
|
Apr 20 2005, 13:59
|
Группа: Новичок
Сообщений: 3
Регистрация: 13-04-05
Пользователь №: 4 108

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

Частый гость
 
Группа: Свой
Сообщений: 189
Регистрация: 27-01-05
Из: с Транссиба
Пользователь №: 2 235

|
Цитата(DLR @ Apr 14 2005, 10:06) А вот в первом случае необходжимо всеголишь N кнопок и резисторов разных потенциалов, которые подключаются к аналоговым входам игрового порта (устроенно на принцйипе управления самой ручкой джостика) - вот и всё железо! Ребята, а можно про игровой порт поподробнее - где какие выводы, куда и что мона подавать?
--------------------
Советские микросхемы - самые большие микросхемы в мире
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|