Что делает открытие последовательного порта?

2302
reve_etrange

Что делает открытие стандартного последовательного порта ПК в электрическом плане (то есть, какое напряжение на каких контактах)?

Например, древняя программа VB6, которая управляет устройством, которое мне поручено поддерживать переключатели .PortOpenдля управления некоторым TTL. В соединении использовались только 2 контакта (плохие припои развалились), к каким контактам мне припаять?

Единственные ярлыки / документация относятся к контактам 7 и 9, в скобках указано 0 В и 5 В, но на .PortOpenсамом деле просто помещает 5 В между RI и RTS ?.

Как сценарий поста, это не самая странная вещь в настройке. TTL, о котором я упоминал выше, также подключается к инструменту через BNC к DB9 (!), Используя только 1 контакт. Я предполагаю, что было предположение о соприкосновении с землей, так как экранирование BNC не связано с выводом GND? Подключение к контакту ножной педали инструмента, это был способ удаленного запуска устройства.

Обновить

Согласно этой странице, выводы DTR и RTS могут быть высокими, когда порт открыт. Если они были настроены таким образом, они будут постепенно снижаться при закрытии порта.

Если DTR и RTS не включены, открытие порта должно установить оба значения на низкое (и держать их на низком уровне).

4
TTL? Сквозь линзы? Транзисторно-транзисторной логики? 12 лет назад 0
Последний. Это проход, который открывается и закрывается триггером, переключаемым при открытии / закрытии последовательного порта. reve_etrange 12 лет назад 0
@reve_etrange: я спрашивал, потому что последовательные порты не имеют уровня TTL, поэтому вы не можете подключить их напрямую. Я думал, ты имел в виду что-то еще. 12 лет назад 0
@Federico Russo, в своих встроенных приложениях и отладке я часто использую UARTS уровня TTL без драйверов. Разве у всех нет одного из этих http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm? kenny 12 лет назад 0
@kenny: ОП говорит, что он на ПК, и там последовательный порт идет от -12В до + 12В. 12 лет назад 0
@Federico Russo, not necessarily, you can find a PC with built-in RS232 any longer. See the link I provided http://ftdichip.com/Products/Cables/USBTTLSerial.htm ? kenny 12 лет назад 0

3 ответа на вопрос

8
stevenvh

Открытие порта ничего не делает в электрическом плане. Он просто сообщает ОС, что с этого момента порт назначен приложению. ОС будет запрещать другим приложениям доступ к порту, пока у вас он открыт, и разрешит вашему приложению доступ к нему.

В этом есть смысл. И аспекты последовательной связи, и программирования Windows не относятся к моей компетенции. reve_etrange 12 лет назад 0
И на некоторых ОС он все еще может использоваться совместно, но по замыслу программиста, однако, возможно, это ошибочное решение. kenny 12 лет назад 0
I unmarked the answer since it's clear that other things can happen when the port is open. Sorry for the rollercoaster. reve_etrange 12 лет назад 0
Это определенно поведение в не-Windows ОС? reve_etrange 12 лет назад 0
6
supercat

Открытие последовательного порта приведет все пины к определенному состоянию (я не помню, какие линии рукопожатия по умолчанию имеют маркировку или интервалы, но это стандарт). Пока последовательный порт не открыт, состояние линий может быть неопределенным. Если Microsoft не изменила что-либо, закрытие последовательного порта оставило бы линии в том состоянии, в котором они находились до закрытия, поэтому, если последняя использованная программа оставляла их в странном состоянии, они оставались бы в этом состоянии до следующего открытия. Кроме того, я не знаю, является ли это по-прежнему проблемой в Windows, но в DOS были некоторые ПК, которые при включении питания переводили свои последовательные порты в тупое состояние. По крайней мере, одна марка ПК установит свой последовательный порт для непрерывной передачи данных, пока не будет указано иное;

Does it do anything besides set RTS and DTR to low/high depending on configuration? I.e. are all pins set low on open, do some transmit continuously, etc? reve_etrange 12 лет назад 0
1

Я не согласен с ответом @Stevenvh. Для окон в частности. Вызовы API «открытие порта» и «закрытие порта», скажем, в .NET или MSCOMM OCX, заставят линии DTR и RTS изменять или не изменять свое состояние электрически.

При открытии порта DTR будет установлен в электрическое состояние, соответствующее булевому свойству DTREnable, если перед открытием порта было установлено значение «true». По умолчанию он останется «ложным», если пользователь никогда не установит DTREnable, то на линии «DTR открытого порта» будет оставаться «ложным», как и до открытия порта.

Та же логика и значения по умолчанию для имен строк "RTS" и свойства "RTSEnable". Вы выбираете «RTSEnable» перед открытием порта, в зависимости от стороны связи на другом конце кабеля и количества задействованных проводов (рукопожатие аппаратного обеспечения против программного рукопожатия против рукопожатия).

  • Обнаружение носителя информации - это ввод, никакого эффекта
  • Получать данные - это ввод, никакого эффекта
  • Передача данных - вывод, останется «ПРОБЕЛ» вместо «МАРК»
  • Терминал данных готов - изменится на «ИСТИНА», если свойство было установлено до «Порт открыт»
  • Сигнальная земля - ​​без изменений
  • Набор данных готов - это ввод, никакого эффекта
  • Запрос на отправку - изменится на «ИСТИНА», если свойство RTSEnable было установлено до «Открытие порта»
  • Очистить для отправки - это ввод, без эффекта
  • Индикатор звонка - ввод, без эффекта

В обратном порядке, когда порт закрыт. Выводы DTR и RTS перейдут в состояние «ЛОЖЬ» или останутся в состоянии «ЛОЖЬ», если они не были установлены через свойства во время открытия.

Как насчет других выводов (кроме DTR и RTS)? reve_etrange 12 лет назад 0
Вывод выходных данных ПК останется в состоянии «ПРОБЕЛ», а не «МАРК». Другие контакты являются входными контактами, поэтому они не изменятся (индикатор вызова, обнаружение несущей, очистка для отправки, ввод данных). 12 лет назад 0
Awesome, thanks! By "stay" SPACE/MARK do you mean that when the port is closed it will revert to some device dependent undefined state? reve_etrange 12 лет назад 0
Да. Но SPACE / MARK можно считать «определенным», я имею в виду предсказуемое напряжение. Sya в TTL «ПРОБЕЛ» - «ЛОЖЬ», ноль вольт или «ИСТИНА» - МАРК +5 Вольт. Но в RS-232 SPACE это + 12В, а MARK -12В. 12 лет назад 0
«* Передача данных - выводится, будет оставаться« ПРОБЕЛ »вместо« MARK »*» - Свободная линия данных RS-232 будет ** MARKING ** при отрицательном напряжении. sawdust 11 лет назад 0