реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подключение простейшего устр-ва через COM или USB
IGS
сообщение Apr 13 2005, 20:06
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 13-04-05
Пользователь №: 4 108



Кто может, дайти пожайлуста ответ на дурацкий, но насущный для меня вопрос :
Cложно ли подключить к PC некое устройство, выдающее в зависимости от того какая нажата на нем кнопка (от 1 до 3), на выходе различный электрический потенциал. Задача анализировать программой приходящий сигнал на COM или USB, с целью узнать какая же кнопка нажата на устройстве. PC должно работать под WIN98-XP. Я не системный программист и не изготавливал никогда железки, работаю сисадмином и знаком по долгу службы только с прикладным высокоуровневым программированием. Вопрос в том, насколько это сложно реализовать своими силами (нужно ли писать для этого драйвер) и что делать с аппаратной частью. Можно ли отделаться каким нибудь преобразователем электр. сигналов в COM логику и програмкой чтения данных из порта, написанной например на Delphi ? Или все сложнее?
Помогите теоретически или практически!
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 13 2005, 20:34
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



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


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
sK0T
сообщение Apr 14 2005, 01:35
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-12-04
Пользователь №: 1 610



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

Но вообще задам филосовский вопрос: а зачем делать, когда на рынке полно устройств в духе игровых USB джойстиков и прочих цифровых клавиатур?
Go to the top of the page
 
+Quote Post
DLR
сообщение Apr 14 2005, 05:06
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 384
Регистрация: 15-03-05
Из: г. Москва
Пользователь №: 3 371



Можно вобще упрстить железо, если использовать игровой порт либо микрофонный вход, и для них так же не надо писать спец. дрова, но в во втором случае необходим звуковой генератор с возможностью перестройки в голосовом диапазоне - это всетаки достаточно сложно!
А вот в первом случае необходжимо всеголишь N кнопок и резисторов разных потенциалов, которые подключаются к аналоговым входам игрового порта (устроенно на принцйипе управления самой ручкой джостика) - вот и всё железо!
Решать ВАМ! smile.gif
Go to the top of the page
 
+Quote Post
Вилли
сообщение Apr 14 2005, 07:05
Сообщение #5


Участник
*

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



С USB просто без паяльника не получится. Это как минимум связка: микросхема USB - UART моста плюс микроконтроллер либо мост USB - параллельный интерфейс. Здесь помимо этого не обойтись и без USB драйвера для моста (правда можно использовать готовый).
Вариант с COM портом - проще, но если уж искать наиболее простой вариант - я бы использовал LPT. В самом простом варианте - кнопки можно вешать почти прямо на разъем.
Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй smile.gif
Go to the top of the page
 
+Quote Post
TriD
сообщение Apr 14 2005, 07:08
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 29-12-04
Пользователь №: 1 728



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


Участник
*

Группа: Свой
Сообщений: 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 драйвера для моста (правда можно использовать готовый).

Объясните мне пожалуста зачем для трёх кнопок писать драйвер blink.gif
Если можно пользоватся HID .
Цитата
Ну и напоследок: а почему бы под это дело не раздраконить обычную компьютерную мышь? казалось бы все кнопки уже приделаны куда надо - Паяльник уже не нужен. Бери и программируй

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

Вариант простой но достаточно ненадёжный т.к. при замыкании одной кнопки
потенциал на этом входе ~+12V
при замыкании двух на обоих входах будет +6V
и трёх +3V
т.е. при замыкании трёх кнопок (одновременно!!) возможно не срабатывание.


IGS если вас интересует как это сделать могу дать пример готовой программы для Сypress и для PC . Если вы живёте в Одессе могу подогнать нашару печатную плату cheers.gif . Могу подогнать и элементы но уже не нашару laugh.gif
Go to the top of the page
 
+Quote Post
Вилли
сообщение Apr 15 2005, 21:16
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 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 драйвера для моста (правда можно использовать готовый).

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

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

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

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

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


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


Я думаю, что вариант c USB мостом будет не только проще, но еще и дешевле (правда за исключением того варианта если IGS из Одессы, а Pahuchy все подгонит нашару) smile.gif
Go to the top of the page
 
+Quote Post
Pahuchy
сообщение Apr 18 2005, 15:01
Сообщение #9


Участник
*

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



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


Ещё раз повторюсь не с какими дровами ковырятся не надо.
Программа со стороны хоста будет состоять из 10 строк. при этом будут использоваться стандартные функции чтения/запись файла.
Если вы не поняли поищите в интернете что такое HID(Human Interface Device ) .
Я это говорю не с потолка (делал сам)

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


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

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


Ещё раз повторюсь какая бы мышка не была (COM, PS/2, USB) она останется мышкой и компутер будет видеть её как мышку а не как три кнопки.
Go to the top of the page
 
+Quote Post
Вилли
сообщение Apr 18 2005, 16:18
Сообщение #10


Участник
*

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



Цитата(Pahuchy @ Apr 18 2005, 18:01)
Это да . Если устройство необходимо использовать только для себя. Иначе теряется универсальность.  Т.е. это устройство не будет работать  с другими компами пока вы не установите на них  "программу для работы с портами под win2000,ХР " которую написали умные люди.

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

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

Соглашусь, что эта задача слишком сложна для человека не работавшего с железом, тем более, что даже у Вас вызывает такое недоумение. smile.gif
Go to the top of the page
 
+Quote Post
IGS
сообщение Apr 20 2005, 09:45
Сообщение #11





Группа: Новичок
Сообщений: 3
Регистрация: 13-04-05
Пользователь №: 4 108



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







*
Go to the top of the page
 
+Quote Post
Alexandr
сообщение Apr 20 2005, 10:29
Сообщение #12


Знающий
****

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



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

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


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
IGS
сообщение Apr 20 2005, 13:59
Сообщение #13





Группа: Новичок
Сообщений: 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!, иначе выключить таймер, продолжать анализировать и т.д.
Насколько такая теория может совпасть с практикой, пока проводов не поял и кода не писал.









*
Go to the top of the page
 
+Quote Post
Alexandr
сообщение Apr 21 2005, 05:37
Сообщение #14


Знающий
****

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



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


--------------------
Иван Сусанин - первый полупроводник
Go to the top of the page
 
+Quote Post
Михалыч
сообщение Apr 22 2005, 14:22
Сообщение #15


Частый гость
**

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



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

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


--------------------
Советские микросхемы - самые большие микросхемы в мире
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 20:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01475 секунд с 7
ELECTRONIX ©2004-2016