IGS 0 13 апреля, 2005 Опубликовано 13 апреля, 2005 · Жалоба Кто может, дайти пожайлуста ответ на дурацкий, но насущный для меня вопрос : Cложно ли подключить к PC некое устройство, выдающее в зависимости от того какая нажата на нем кнопка (от 1 до 3), на выходе различный электрический потенциал. Задача анализировать программой приходящий сигнал на COM или USB, с целью узнать какая же кнопка нажата на устройстве. PC должно работать под WIN98-XP. Я не системный программист и не изготавливал никогда железки, работаю сисадмином и знаком по долгу службы только с прикладным высокоуровневым программированием. Вопрос в том, насколько это сложно реализовать своими силами (нужно ли писать для этого драйвер) и что делать с аппаратной частью. Можно ли отделаться каким нибудь преобразователем электр. сигналов в COM логику и програмкой чтения данных из порта, написанной например на Delphi ? Или все сложнее? Помогите теоретически или практически! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vet 0 13 апреля, 2005 Опубликовано 13 апреля, 2005 · Жалоба Драйверов для работы с последовательными портами в Windows не нужно, всё доступно через WinAPI. Железо - любой микроконтроллер (лучше, если он будет иметь на борту аппаратный UART), плюс микросхема-преобразователь уровней для согласования электрических параметров м/к и RS-232, или схема на паре транзисторов, выполняющая те же функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sK0T 0 14 апреля, 2005 Опубликовано 14 апреля, 2005 · Жалоба Кнопки всего три? В принципе можно подключить эти кнопки через пару резисторов к COM-порту и считывать его состояния напрямую. Под FreeBSD — пара строчек кода, под виндой не знаю, я её последний раз видел, когда она была версии 3.1. :) Но вообще задам филосовский вопрос: а зачем делать, когда на рынке полно устройств в духе игровых USB джойстиков и прочих цифровых клавиатур? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DLR 0 14 апреля, 2005 Опубликовано 14 апреля, 2005 · Жалоба Можно вобще упрстить железо, если использовать игровой порт либо микрофонный вход, и для них так же не надо писать спец. дрова, но в во втором случае необходим звуковой генератор с возможностью перестройки в голосовом диапазоне - это всетаки достаточно сложно! А вот в первом случае необходжимо всеголишь N кнопок и резисторов разных потенциалов, которые подключаются к аналоговым входам игрового порта (устроенно на принцйипе управления самой ручкой джостика) - вот и всё железо! Решать ВАМ! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Вилли 0 14 апреля, 2005 Опубликовано 14 апреля, 2005 · Жалоба С USB просто без паяльника не получится. Это как минимум связка: микросхема USB - UART моста плюс микроконтроллер либо мост USB - параллельный интерфейс. Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый). Вариант с COM портом - проще, но если уж искать наиболее простой вариант - я бы использовал LPT. В самом простом варианте - кнопки можно вешать почти прямо на разъем. Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TriD 0 14 апреля, 2005 Опубликовано 14 апреля, 2005 · Жалоба Что бы подключить 3 кнопки к СОМ-порту достаточно использовать 3 сингнала CTS, DSR, и DCD (это входы). Вешаем на них по кнопке, вторые концы которых объеденены и подключены, скажем, к RTS. Входы CTS, DSR и DCD подтягиваем через резисторы к сигналу TDX. Вот и все. Для того, что бы все это стало работать необходимо из программы (после открытия порта) установить значение сигнала RTS = '0'. После этого, при нажатии на кнопки соотв. сигнал CTS, DST и/или DCD будет равен "0". Если ни одна не нажата, то - "1". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pahuchy 0 15 апреля, 2005 Опубликовано 15 апреля, 2005 · Жалоба С 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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Вилли 0 15 апреля, 2005 Опубликовано 15 апреля, 2005 · Жалоба С 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: <{POST_SNAPBACK}> Я думаю, что вариант c USB мостом будет не только проще, но еще и дешевле (правда за исключением того варианта если IGS из Одессы, а Pahuchy все подгонит нашару) :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pahuchy 0 18 апреля, 2005 Опубликовано 18 апреля, 2005 · Жалоба писать к нему программу, опять же, ковыряться с дровами??? Ещё раз повторюсь не с какими дровами ковырятся не надо. Программа со стороны хоста будет состоять из 10 строк. при этом будут использоваться стандартные функции чтения/запись файла. Если вы не поняли поищите в интернете что такое HID(Human Interface Device ) . Я это говорю не с потолка (делал сам) Умные люди уже давно написали не одну программу для работы с портами под win2000,ХР Это да . Если устройство необходимо использовать только для себя. Иначе теряется универсальность. Т.е. это устройство не будет работать с другими компами пока вы не установите на них "программу для работы с портами под win2000,ХР " которую написали умные люди. Да, С USB мышкой много каши не сваришь. А мыши для COM уже вышли из моды и о них подумать забыли? Ещё раз повторюсь какая бы мышка не была (COM, PS/2, USB) она останется мышкой и компутер будет видеть её как мышку а не как три кнопки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Вилли 0 18 апреля, 2005 Опубликовано 18 апреля, 2005 · Жалоба Это да . Если устройство необходимо использовать только для себя. Иначе теряется универсальность. Т.е. это устройство не будет работать с другими компами пока вы не установите на них "программу для работы с портами под win2000,ХР " которую написали умные люди. Никакую программу ставить не нужно. Все необходимые манипуляции - это подключение нужной dll к своему коду и пара вызовов функций для записи регистров данных LPT порта и чтения регистра состояния порта :smile3046: . При этом аппаратное обеспечение остается минимальным: разъем DB-25, несколько резисторов и те самые 3 кнопки. И никаких Cypress'ов, и программ для них. Поймите: я не против Вашего предложения. Я бы на месте IGS, так бы и поступил. Но учитывая, что IGS: "не изготавливал никогда железки, работаю сисадмином и знаком по долгу службы только с прикладным высокоуровневым программированием", я и советую наиболее безболезненный вариант. Ещё раз повторюсь какая бы мышка не была (COM, PS/2, USB) она останется мышкой и компутер будет видеть её как мышку а не как три кнопки. Соглашусь, что эта задача слишком сложна для человека не работавшего с железом, тем более, что даже у Вас вызывает такое недоумение. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IGS 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Спасибо всем кто отозвался! Я понял что работать в моем случае все таки легче с COM. Созрел уточняющий вопрос! Упростим задачу еще : есть устройство на котором размещена допустим всего ОДНА кнопка. При нажатии кнопки на 2-х выходных проводах устройства сигнал +12V. Можно ли этот потенциал напрямую подавать на вход DSR,CTS или любой другой вход COM? Какова допустимая сила тока? Обнулится ли входная 1 если сигнал перестать подавать или это нужно делать программно? <{POST_SNAPBACK}> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexandr 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Как Вы сами заметили DSR и CTS входы, поэтому больший ток чем они могут принять они не примут (обычно несколько десятков мкА). Если вы уверены, что Ваш сигнал +12V, не скакнет вольт эдак до 20, то можете подключать напрямую. Обнулится ли входная 1 если сигнал перестать подавать или это нужно делать программно? Ну во первых, если мне не изменяет память +12В - это "0", а -12В - это "1". (поправьте если не прав). Далее. Все завит от того КАК Вы перестанете подавать Ваши 12V. Если просто оборвете цепь, то входы все равно, будут считать что на них +12В. Поэтому надо +12В менять на -12В. И программно делать ничего не надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IGS 0 20 апреля, 2005 Опубликовано 20 апреля, 2005 · Жалоба Благодорю за внятное пояснение. В принципе все понял, но рескну задать еще вопрос на туже тему. Во первых если можно то поточнее о максимальном токе, чтобы не спалить COM. А во вторых опишу предполагаемый алгоритм работы устройства и анализа сигналов. Пользователь нажимает условное кол-во раз данную кнопку. Считаем например, что 3 нажатия кнопки в течении 30 секунд считаются срабатыванием и сигналом программе для "принятия действий". Как мне видится я например, в потоке анализирую состояние COM (допустим CTS), если там 1, обнуляю счетчик срабатываний "Count", обнуляю из программы CTS=0, запускаю таймер на 30 сек, прибавляю срабатывания : Count=Count+1, жду следующей 1, добавляю к счетчику, обнуляю итак 30 сек. Если 3 срабатывания за 30 сек, все OK!, иначе выключить таймер, продолжать анализировать и т.д. Насколько такая теория может совпасть с практикой, пока проводов не поял и кода не писал. <{POST_SNAPBACK}> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexandr 0 21 апреля, 2005 Опубликовано 21 апреля, 2005 · Жалоба Могу Вас разочаровать - за одно нажатие кнопки ваш count насчитает нажатий эдак 200-300 если не больше. Дребезг контактов, батенька. Поэтому Вам предется усложнить алгоритм и программно бороться с дребезгом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Михалыч 0 22 апреля, 2005 Опубликовано 22 апреля, 2005 · Жалоба А вот в первом случае необходжимо всеголишь N кнопок и резисторов разных потенциалов, которые подключаются к аналоговым входам игрового порта (устроенно на принцйипе управления самой ручкой джостика) - вот и всё железо! <{POST_SNAPBACK}> Ребята, а можно про игровой порт поподробнее - где какие выводы, куда и что мона подавать? :a14: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться