Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Вниз

Работа с COM портом   Найти похожие ветки 

 
ShyricK ©   (2007-07-28 00:27) [0]

Доброго времени суток всем!! Народ, пожалуйста подскажите можно ли программным путём управлять COM(LPT) портом: в частности подавать на клемы напряжение, т е объясняю есть в проге 4 кнопки и есть4 светодиода подкл к порту нужно чтобы нажимаешь на1 кнопку загорается1 светик и тд. возможно ли это сделать?


 
tesseract ©   (2007-07-28 12:06) [1]


>  Народ, пожалуйста подскажите можно ли программным путём
> управлять COM(LPT) портом:


Можно.

>  е объясняю есть в проге 4 кнопки и есть4 светодиода


К Com можно только 2 подключить, остальное только через LPT.  ищи WinIo - с ним будет проще.


 
ShyricK ©   (2007-07-28 15:06) [2]

Можно поточнее что за WinIo?


 
ShyricK ©   (2007-07-28 15:08) [3]

И где искать то?


 
Инс ©   (2007-07-28 17:09) [4]


> ищи WinIo - с ним будет проще.

А зачем? Работать с COM-портом и так несложно. Вот только действительно на 4 IN и 4 OUT ножек не хватит :)

Вот статья по COM:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1126
Вот по LPT:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1099


 
ShyricK ©   (2007-07-28 18:16) [5]

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


 
Инс ©   (2007-07-28 18:56) [6]


> Так ведь у меня не работа с устройством, а обычная подача
> напряжения или я там чего-то не понял.

Так и работа с устройством - это по сути тоже обычная подача и считывание напряжения с выводов :))
Посмотрите GetCommModemStatus и EscapeCommFunction


 
tesseract ©   (2007-07-30 10:41) [7]


> Посмотрите GetCommModemStatus и EscapeCommFunction


LPT модемы  давно не видел.


 
Anatoly Podgoretsky ©   (2007-07-30 19:25) [8]

Для СОМ порта отсутствие напряжения как факт не существует. Принцип работы у него такой.


 
ShyricK ©   (2007-07-30 22:33) [9]

Ну а для LPT WinIo  поможет? Если да то дайте ссылку где чё почитать посотреть а то с этим не разу не работал.


 
tesseract ©   (2007-07-30 22:38) [10]


> Для СОМ порта отсутствие напряжения как факт не существует.


Это для RS485 - там дифференциал нарпряжения. В Rs232 есть земля и две сигнальные линии в самой минимальной конфигурации. Напряжение - +12 вольт на сигнал.  

по WinIo тут, версию для Delphi точно видел  : http://www.google.com/search?client=opera&rls=ru&q=winio+library&sourceid=opera&ie=utf-8&oe=utf-8


 
Anatoly Podgoretsky ©   (2007-07-30 22:43) [11]

> tesseract  (30.07.2007 22:38:10)  [10]

Не так, на сигнальных и управляющих линиях всегда есть напряжение, или минус, или плюс о 5 до 15 вольт


 
ShyricK ©   (2007-07-30 22:48) [12]


> по WinIo тут, версию для Delphi точно видел  : http://www.
> google.com/search?client=opera&rls=ru&q=winio+library&sourceid=opera&ie=utf-
> 8&oe=utf-8


А где именно то?


 
tesseract ©   (2007-07-31 12:54) [13]


> Не так, на сигнальных и управляющих линиях всегда есть напряжение,
>  или минус, или плюс о 5 до 15 вольт


На управляющих не всегда. По умолчанию не стоят.


> А где именно то?

тут без заголовка, но его переписать 3 мин:
http://internals.com/


 
Инс ©   (2007-07-31 13:26) [14]


> Не так, на сигнальных и управляющих линиях всегда есть напряжение,
>  или минус, или плюс о 5 до 15 вольт

выходные от 5, входные - от 3


 
Anatoly Podgoretsky ©   (2007-07-31 19:27) [15]

На входные линии напряжение с микросхемы подать нельзя.


 
Инс ©   (2007-07-31 19:45) [16]


> На входные линии напряжение с микросхемы подать нельзя.


Брр, не понял. С какой микросхемы? Есть специализированные микроконтроллеры, которые стыкуются к RS-232. Правда как правило уровень сигналов микросхем ТТЛ. Необходимо использовать преобразователи уровней RS-232 в TTЛ и наоборот.


 
Anatoly Podgoretsky ©   (2007-07-31 21:13) [17]

> Инс  (31.07.2007 19:45:16)  [16]

Речь про СОМ порт


 
YurikGL ©   (2007-07-31 22:20) [18]


> Брр, не понял. С какой микросхемы?

Есть подозрение, что уарт... :)

Вообще, насколько я знаю, com-порт не предназначен для того, что бы к нему напрямую подключали лампочки, светодиоды и прочие единичные индикаторы сколько бы ни было у него на выходе. Пожгете порт и все.


 
YurikGL ©   (2007-07-31 22:25) [19]

Схема для LPT
http://www.technograd.com/print_atic/1414


 
Anatoly Podgoretsky ©   (2007-07-31 22:27) [20]

> YurikGL  (31.07.2007 22:20:18)  [18]

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


 
YurikGL ©   (2007-07-31 22:29) [21]

Вот и про COM
http://schemz.narod.ru/COMdevice.htm

Обращаю внимание на фразу

сигнал этот придется усилить по току и без внешнего питания вы вряд ли обойдётесь, так как макс. ток, который может выдать СОМ порт-  что-то около 25мА. Можете это питание взять с  блока питания компьютера. Возможно, придётся ещё и усреднить этот ШИМ сигнал RC-цепочкой или интегрирующим усилителем,  это зависит от вашего устройства.


 
Инс ©   (2007-07-31 23:38) [22]


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


Будет. Сам светил. Ограничительный резистор просто ставить нужно. Чтбы ток ограничить.


 
tesseract ©   (2007-08-01 10:16) [23]


> прочие единичные индикаторы сколько бы ни было у него на
> выходе. Пожгете порт и все.


Современный довольно сложно пожечь - все нормальные микросхемы включают  защиту от статики/КЗ .


> Будет. Сам светил.


Я знаю такие весы, у которых буфер порта питался от CTS :-)


 
Инс ©   (2007-08-01 10:37) [24]


> Я знаю такие весы, у которых буфер порта питался от CTS
> :-)


Ничего удивительного. Комовские мыши питаются от RxD


 
Anatoly Podgoretsky ©   (2007-08-01 19:55) [25]


> Современный довольно сложно пожечь - все нормальные микросхемы
> включают  защиту от статики/КЗ .


Обязаны все иметь, даже выпуска 1981 года, иначе они не имеют право так называться, поскольку это вытекает из стандарта на RS-232


 
Anatoly Podgoretsky ©   (2007-08-01 19:55) [26]


> Ничего удивительного. Комовские мыши питаются от RxD

Не путаешь, это входной контакт, а не выходной.


 
Инс ©   (2007-08-01 20:23) [27]


> Не путаешь, это входной контакт


Не путаю, само собой входной. К чему этот вывод подключен на удаленном для мыши устройстве (к TxD или еще к чему-либо) она не знает и знать не обязана. Для нее это именно RxD.


 
Инс ©   (2007-08-01 20:33) [28]

Вообще, по-хорошему, конечно же лучше не подключать диодики и прочую лабуду напрямую, а ставить какой-либо буферный элемент, выполняющий роль преобразователя импеданса: усилитель, повторитель, преобразователь уровня - что-нибудь в этом роде. Чтобы входное сопротивление было большим, а выходное - маленьким. Не нужно чтобы ток протекал линиям порта, даже если там защита от КЗ или большая нагрузочная способность.


 
tesseract ©   (2007-08-02 09:58) [29]


> Обязаны все иметь, даже выпуска 1981 года,


Ты это скажи фирме Maxim-Dallas, у которой такие микрухи имеют приставку CPE - и стоят раза в три дороже, чем без CPE. Сам их перепаял вагончик и три телеги.


 
tesseract ©   (2007-08-02 10:00) [30]


> К чему этот вывод подключен на удаленном для мыши устройстве
> (к TxD или еще к чему-либо) она не знает и знать не обязана.
>  Для нее это именно RxD.


Мыши проще от тругих питаться контактов, гасить сигнальную линию-то зачем, как мышь от логического ноля запитать можно, мне инетресно, или ей 0,4 вольта хватает ?.

ЗЫ: Transiever и REciever довольно легко трактуються :-)


 
Инс ©   (2007-08-02 10:36) [31]


> Мыши проще от тругих питаться контактов, гасить сигнальную
> линию-то зачем, как мышь от логического ноля запитать можно,
>  мне инетресно, или ей 0,4 вольта хватает ?.


Ууу, как все запущено... Ну во-первых, логический 0 - это не 0,4 вольта, а от +3 до +12. А во-вторых, когда по линиям TxD и RxD ничего не передается, на них установлен уровень логического единицы. Вот тебе картинка в общем случае:
_________     ____________________________________________
             |__|                                 |__|   |   |          
хол. ход.  старт       биты данных        бит  стоп-биты    хол. ход
               бит                              паритета

А от -3..-12 В вполне можно запитаться.


 
Инс ©   (2007-08-02 10:41) [32]


> Transiever и REciever

Transmit и Recieve


 
tesseract ©   (2007-08-02 10:51) [33]


>  Ну во-первых, логический 0 - это не 0,4 вольта, а от +3
> до +12.


Ну это я с  ТТЛ перепутал :-)  т.е. Мышь ещё имеет выпрямитель от +3 до +12 В. ? Разбирал я Com-мыши, там  7 проводов подходит к плате, а не 3.


> на них установлен уровень логического единицы.


Гм.  Ставили мультиметр когда девайс проверяли, единицы как-то не ощущалось.


 
Инс ©   (2007-08-02 10:57) [34]


> Мышь ещё имеет выпрямитель от +3 до +12 В. ?


Какой выпрямитель? Там ведь не переменное напряжение, а постоянное. Стабилизатора будет достаточно.


> Разбирал я Com-мыши, там  7 проводов подходит к плате, а
> не 3.

Ну и ладно. А почему должно быть 3? Я разве это где-либо утверждал? Интерфейс RS-232С подразумевает 9 линий, допускаю, что 2 из них, типа какого нибудь RI не используются. А RxD используется не по назначению, т.к. данные на мышь передавать никакие не надо.


> Гм.  Ставили мультиметр когда девайс проверяли, единицы
> как-то не ощущалось.

Не знаю я что вы там и куда ставили, но повторю еще раз: уровень лог. единицы для RS-232 от -3 до -12 В.


 
tesseract ©   (2007-08-02 11:10) [35]


> Не знаю я что вы там и куда ставили,


Смотрели логические единицы мультиметром с памятью. Там в схеме не так что там на нарисовали вот и искали линию. В сотоянии покоя там явно был не плюс.   RxD в мышах в целом не используеться согласен, можно выставить если не лень, но PnP мышь в любом случае должна использовать CTS/RTS  и RxD - смотри описание протокола PnP Windows для COM-портов, в принципе можно и без него, но тогда это уже не PnP-мышка получаеться.


 
Инс ©   (2007-08-02 11:16) [36]


> В сотоянии покоя там явно был не плюс.


Фуух, третья попытка. Уровень логической единицы - от минус трех до минус двенадцаци. На минусы внимание обрати! :)


 
\/iKTOR   (2007-08-02 13:00) [37]

Инс правду глаголит!
СОМ порт весьма специфичное устройство и его логические уровни отличаются от всех стандартов в логике TTL  и CMOS. В COM порте уровню лог 0 соответствуют все напряжения выше нуля, а лог 1 наоборот все отрицательные напряжения (ниже 0). Эти напряжения формируются конденсаторным удвоителем напряжения и достигают значений гдето в 15 вольт.
Токи нагрузки при этом не могут быть больше приблизительно 10 милиампер.
Такой нестандартный стандарт придуман изначально для передачи сигналов на большие расстояния, где с увеличением длины провода увеличивается падение напряжения.
Но 10 миллиамперами засветить светодиод вполне реально, чтобы не перегружать выход СОМ порта можно поставить последовательно диод, который будет пропускать напряжение нужной полярности, и разумеется баластный резистор.
Но правильным всеже есть установка буферного каскада на CMOS инверторе, и не будет путаницы с лог 0 и 1. Но ему потребуется доп питание которое можно снять например с 5 вольтового USB порта, но потребуется схема преобразователя с 5 на 15-16 вольт.
А вот что я слышал(точнее читал, но толком не разобрался) что сейчас вроде протокол обмена с СОМ портом не позволяет тупо устанавливать на нем уровни 0 и 1 а требует протоколов обмена наподобие работы с файлами, тоесть уже сформированные посылки сигналов опрашивающие (запрашивающие) данные по определенным алгоритмам ровно как и считывание потока данных а не единичных состояний.


 
tesseract ©   (2007-08-02 15:02) [38]


> А вот что я слышал(точнее читал, но толком не разобрался)
> что сейчас вроде протокол обмена с СОМ портом не позволяет
> тупо устанавливать на нем уровни 0 и 1 а требует протоколов
> обмена наподобие работы с файлами, тоесть уже сформированные
> посылки сигналов опрашивающие (запрашивающие) данные по
> определенным алгоритмам ровно как и считывание потока данных
> а не единичных состояний.


UART имеешь в виду ? Возможно. Единицы только CTS/DTR получить и можно. И они вроде вот таких хитростей не имеют, на превый взгляд по схеме весов ничего экстаординарного не наблюдалась.  


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


По стандарту 30 м на 9600 вроде, хотя добивался и 19200 стабильной работы на хорошем кабеле. Так что расстояния у Rs232 большими быть не могут, если только RS422 имееться в виду - он да мошшшный, или RS485, который помехи просто игнорирует.


 
\/iKTOR   (2007-08-02 15:18) [39]

Вобщето я имел ввиду что относительно большие, чем скажем обычная перефирия типа мыши, клавы и ЮСБ устройства, LPT порт таких особенностей не имеет, только СОМ, а расстояния зависят еще и от качества самого кабеля, я полагаю 30 метров не предел, точных данных в конкретных случаях не знаю, но думаю эти расстояния измеряются сотней, другой метров, что относительно большое расстояние без специализированных устройств.
Это расстояние зависит от сопротивления самого провода, и от тока нагрузки, тоесть чем меньше входное сопротивление устройсва принимающего сигнал, тем меньше расстояние до него можно получить.

Что касательно стандартов протокола обмена, то тут я мало что знаю, о чем и оговаривался сразу возможно это как вы говорите только к UART относится.
Весь мой опыт работы с СОМ портами сводится к программированию ПИК-контролеров и то на базе готовых программ, только с перефирией возится приходилось.


 
Инс ©   (2007-08-02 15:22) [40]


> Так что расстояния у Rs232 большими быть не могут


Вот это верно. Хотя именно из-за более высокого уровня напряжения и меньших скоростей RS-232 все равно по дальности USB опережает. Для передачи сигналов на большие расстояния передают током, а не напряжением.



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.057 c
15-1186427988
Kostafey
2007-08-06 23:19
2007.09.02
Установка кодировки


9-1159091711
Pa5ha
2006-09-24 13:55
2007.09.02
Согласовние анимации в игре


2-1186687426
Knob
2007-08-09 23:23
2007.09.02
Таблица символов


6-1168754919
DRtM
2007-01-14 09:08
2007.09.02
Проблемма с закачкой


2-1186468272
gentos
2007-08-07 10:31
2007.09.02
как в TdxDBGrid делать кнопку с тремя точками в колонке ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский