rts control что это

RS232. Взгляд изнутри

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

Последовательный порт (далее ПП) удобный инструмент для общения между разными периферийными устройствами (как собранные самостоятельно на основе какого-нибудь МК, так и заводские: принтеры, осциллографы и т.д.) с одной стороны, и ПК с другой. На сегодняшний день наиболее популярные из всех ПП являются RS232 стандарт (переводится как «Recommended Standard») за его простоту и USB стандарт («Universal Serial BUS») за его резвость.
USB бесспорно вещь полезная, но жудко навороченная. Поскольку многим самодельным устройствам бешенный обмен данными с ПК неособо нужон, тогда на помощи приходит простой, надежный и многоопытный RS232 Интерфейс.

По RS232 стандарту устройства участвующие в обмене данными бывают двух типов:
Data Terminal Equipment (DTE) (устройство отдающее команды — ведущий) и
Data Circuit-Terminating Equipment (DCE) (периферия, обслуживающая хозяина — ведомый). Нередко, некоторые периферийные устройства ведут себя как DTE (например осциллографы, или наши с вами девайсы).

Модемное соединение — подрозумеваеи наличие некой иерархии, тоесть в случае когда в обмене данными участвуют больше чем два устройства им необходим некий арбитр (модем), разрешающий в определенный момент времени отсылать данные только одному устройству (в то время как читать могут хоть все остальные). Модемом может быть что угодно: отдельный девайс, или один из участников обмена данными, главное недопустить потери данных.

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

В случае когда устройств только два, или есть явный ведущий которого слушаются все остальные, никакого посредника им не нужно, а это означает что к их общению больше никто не подключится, и никакого арбитра в лице модема им не надо ( в отличие от предыдущего типа соединения, когда к одному принтеру можно подключить штук 10 ПК ). Опять-же главное недопустить одновременной отправки данных — в определенный момент времени, общатся может только одна пара устройств. Такое соединение называется нуль-модемное соединение:

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

Типы передач данных

Минимальное количество проводков необходимое для обмена данными равно двум (этокий жадный изврат), если передача является односторонней ([Tx, GND]). В случае когда необходимо полноценное — двухстороннее общение число проводков возростает аж до трех ([Rx, Tx, GND]). Большинство периферийных устройств поддерживают одновременную передачу и прием данных — full-duplex, но если один из собеседников на такое не способен, обмен переходит в разряд неполноценных — half-duplex (пока один не закончил передачу/прием другой пляшит под его дудку).

Распиновка COM разъёма

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

В столбце Signal Name, DATA Terminal можно заменить на ПК (то есть Data Terminal Ready соответствует ПК готов к работе), а DATA Set на Периферия.

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

Назначение управляющих пинов ([RTS, CTS], [DTR, DSR] и [CD, RI]) сводится к следующему:

• Отслеживать состояние собеседника
• Отслеживать поток данных

Пара [RTS, CTS] — используется для обозначения готовности данной пары устройств к передачи/приему соответственно.

1. DTE устройство устанавливает RTS = on, сигнализируя о том что оно готово к приему данных. Если устройство получило достаточное количество данных то устанавливаем RTS =off.
2. DCE устройство устанавливает CTS =on, сигнализируя о том что оно готово к приему данных. Если устройство получило достаточное количество данных то устанавливаем CTS =off.

Кто каким пином будет управлять (тоесть кому быть DTE а кому DCE) решать вам. Соответственно программы управления этими устройствами должны выставить RTS(выход)/CTS (вход), или наоборот, иначе могут быть глюки.

Пара [DTR, DSR] — большинство устройств используют эти пины для сигнализирования что они подключены и готовы к работе.

1. DTE устройство устанавливает DTR=on, сообщая DCE устройству что оно готово к работе. Соответственно когда DTE устанавливает DTR=off, то оно больше не желает (или не может) общатся (положила трубку 🙂 )
2. DCE устройство устанавливает DSR=on, сообщая что оно подключено, а когда DSR=off – оно отключено.

Такой метод контроля потока данных называется – hardware handshaking (чтото вроде аппаратное управление). Пары [DTR, DSR] и [RTS, CTS] могут быть с легкостью взаимо-заменены без всякого ущерба.

Пара [CD, RI] – используется для обозначения (в тот самом случае когда один принтер на отару кампов) что в данный момент линии передачи данных кем-то заняты.
Как правило этой парой управляет модем, но не обязательно.

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

• St – Стартовый Бит (начало передачи данных) – логический ноль
• 0..8 – позиция бита (данных) в пакете (позиция «0» – LSB)
• P – бит парности (проверка успешной передачи данных)
• Sp1,Sp2 – стоп биты (завершают передачу пакета) – логическая единица
• [] – в скобках обозначены биты которые могут отсутствовать
(биты данных с 5 по 8 так или иначе будут переданы, но не рассмотрены — мусор)
• IDLE – ожидание (логическая единица)

Как я уже говорил, во время передачи — данные инвертируются, так что если будете проверять осциллографом как отсылается пакет — не пугайтесь.

Часто формат пакета обозначается следующим образом: 8-N-1 (8 бит данных, без бита проверки, один стоп бит) или 5-E-2 (5 бит данных (3 бита мусора), с проверкой на четность, два стоп бита).

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

Поскольку MAX232 поддерживает аппаратное управление COM портом, и если с разводкой данной схемы проблем нет, почемуб и не использовать эту возможность, вдруг когда пригодится (не пропадать же добру). В противном случае, можно обойтись без аппаратного управления, как зачастую и происходит.

Софт
UPD: заменил вывод cout на printf, и убрал флаги RxClear и TxClear

ПП по сути является фаилом из которого ведется чтение/запись, поэтому основные операции которые применяются над ПП можно группировать следующим способом:

Запихните предыдущий код в хидэр фаил, например с именем COM_INIT.h и можно использовать ПП.

Надеюсь эти скромные знания кому-то помогут. Если есть вопросы попытаюсь ответить.

Источник

Управление потоком данных

Для управления потоком данных (Flow Control) могут использоваться два варианта протоко-

ла – аппаратный и программный. Иногда управление потоком путают с квитированием. Квитиро-

вание (handshaking) подразумевает посылку уведомления о получении элемента, в то время как управление потоком предполагает посылку уведомления о возможности или невозможности после- дующего приема данных. Зачастую управление потоком основано на механизме квитирования.

Аппаратный протокол управления потоком RTS/CTS (hardware flow control) использует сиг-

нал CIS, который позволяет остановить передачу данных, если приемник не готов к их приему.

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

Передатчик «выпускает» очередной байт только при включенной линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность по- сылки). Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние при- емника. Микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части – сдвигающий, для приема очередной посылки, и хранящий, из которого считывается приня- тый байт. Это позволяет реализовать обмен по аппаратному протоколу без потери данных.

Аппаратный протокол удобно использовать при подключении принтеров и плоттеров, если они

его поддерживают. При непосредственном (без модемов) соединении двух компьютеров аппарат- ный протокол требует перекрестного соединения линий RTS – CTS. При непосредственном соеди- нении у передающего терминала должно быть обеспечено состояние «включено» на линии CTS (со- единением собственных линий RTS – CTS), в противном случае передатчик будет «молчать».

Применяемые в IBM PC приемопередатчики (8250) сигнал CTS аппаратно не отрабатывают, а только показывают его состояние в регистре MSR. Реализация протокола RTS/CTS возлагается на драйвер BIOS Int 14h, и называть его «аппаратным» не совсем корректно. Если же программа, пользующаяся СОМ-портом, взаимодействует с UART на уровне регистров (а не через BIOS), то обработкой сигнала CTS для поддержки данного протокола она занимается сама. Ряд коммуника- ционных программ позволяет игнорировать сигнал CTS (если не используется модем), и для них не требуется соединение входа CTS с выходом даже своего сигнала RTS. Однако существуют и иные приемопередатчики (например, 8251), в которых сигнал CTS отрабатывается аппаратно. Для них, а также для «честных» программ, использование сигнала CTS на разъемах (а то и на кабелях) обязательно. Преимущество протокола RTS/CTS во времени реакции (по сравнению с программ- ным методом XON/XOFF) остается лишь для буферированной (в режиме FIFO) передачи.

Программный протокол управления потоком XON/XOFF предполагает наличие двунаправ-

ленного канала передачи данных. Работает протокол следующим образом: если устройство, прини- мающее данные, обнаруживает причины, по которым оно не может их дальше принимать, оно по об- ратному последовательному каналу посылает байт-символ XOFF (13h). Противоположное устрой- ство, приняв этот символ, приостанавливает передачу. Когда принимающее устройство снова стано- вится готовым к приему данных, оно посылает символ XON (llh), приняв который противополож- ное устройство возобновляет передачу. Время реакции передатчика на изменение состояния при- емника по сравнению с аппаратным протоколом увеличивается, по крайней мере, на время переда- чи символа (XON или XOFF) плюс время реакции программы передатчика на прием символа.

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

Из этого следует, что данные без потерь могут приниматься только приемником, имеющим до- полнительный буфер принимаемых данных и сигнализирующим о неготовности заблаговременно (имея в буфере свободное место).

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

управляющих сигналов интерфейса – минимальный кабель для двустороннего обмена может иметь только 3 провода. Недостатком, помимо обязательного наличия буфера и большего времени реакции (снижающего общую производительность канала из-за ожидания сигнала XON), является сложность реализации полнодуплексного режима обмена. В этом случае из потока принимаемых дан- ных должны выделяться (и обрабатываться) символы управления потоком, что ограничивает набор передаваемых символов.

Интерфейс RS-485

Стандарт RS-485 был совместно разработан двумя ассоциациями производителей: Амери- канскими Ассоциацией электронной промышленности (EIA – Electronics Industries Association) и Ассоциацией промышленности средств связи (TIA – Telecommunications Industry Associastion).

«Официальное» название стандарта – TIA/EIA-485 Electrical Characteristics of Generators and Receivers for Use in Balanced Digital Multipoint Systems (Электрические характеристики передатчи- ков и приемников, используемых в балансных цифровых многоточечных системах). Однако боль- шинство специалистов используют старое обозначение, RS-485.

Интерфейс RS-485 – широко распространенный достаточно высокоскоростной и помехо- устойчивый промышленный последовательный интерфейс передачи данных. Практически все со- временные компьютеры в промышленном исполнении, большинство интеллектуальных датчиков и исполнительных устройств, программируемые логические контроллеры наряду с традиционным интерфейсом RS-232 содержат в своем составе ту или иную реализацию интерфейса RS-485.

Традиционный интерфейс RS-232 в промышленной автоматизации применяется достаточно

редко. Сигналы этого интерфейса передаются несимметричными сигналами относительно общего провода, длина линии связи, как правило, ограничена расстоянием в несколько метров из-за низ- кой помехоустойчивости. Интерфейс RS-232 принципиально не позволяет создавать сети, так как соединяет только 2 устройства (соединение «точка-точка»). До недавнего времени RS-232 имелся в каждом PC-совместимом компьютере, где использовался в основном для подключения «мыши», модема, реже – для передачи данных на небольшое расстояние из одного компьютера в другой.

Интерфейс RS-485 позволяет создавать сети путем параллельного подключения многих уст- ройств к одной физической линии («мультиплексная шина»), обеспечивая обмен данными между несколькими устройствами по одной двухпроводной линии связи в полудуплексном режиме (раз- новидность RS-485 – RS-422 – в дуплексном). Сигналы интерфейса RS-485 передаются дифферен- циальными перепадами напряжения, что обеспечивает высокую помехоустойчивость и общую длину линии связи до 1 км (и более, с использованием специальных устройств – повторителей).

Протоколы. Стандарт RS-485 не нормирует формат информационных кадров и протокол обмена. Наиболее часто для передачи байтов данных используются те же фреймы, что и в интер- фейсе RS-232: стартовый бит, биты данных, бит паритета (если нужно), стоповый бит. Протоколы обмена в большинстве систем работают по принципу «ведущий»–«ведомый»: одно устройство на магистрали является ведущим (master) и инициирует обмен посылкой запросов подчиненным (ве- домым) устройствам (slave), которые различаются логическими адресами. Одним из популярных протоколов является протокол Modbus RTU.

Разъемы. Тип соединителей и их распайка также не оговариваются стандартом RS-485.

Встречаются соединители DB9, клеммные соединители и т.д.

В интерфейсе RS-485 используется принцип дифференциальной (балансной) передачи дан- ных, суть которого заключается в передаче одного сигнала по двум проводам, причем по одному проводу идет оригинальный сигнал, а по другому – его инверсная копия. Таким образом, между двумя проводами витой пары всегда есть разность потенциалов: при «1» она положительна, при

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что этоrts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что этоrts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что этоrts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это

Такой способ передачи обеспечивает высокую устойчивость к синфазной помехе (дейст- вующую на оба провода линии одинаково). Так, электромагнитная волна, проходя через участок линии связи, наводит в обоих проводах потенциал. Если сигнал передается потенциалом в одном проводе относительно общего («земли»), как в RS-232, то наводка на этот провод может исказить сигнал относительно хорошо поглощающей наводки «земли». Кроме того, на сопротивлении

длинной «земли» будет падать разность потенциалов земель – дополнительный источник искаже- ний. При дифференциальной же передаче искажения не происходит, поскольку, если два провода пролегают близко друг к другу (к тому же перевиты), то наводка на оба провода одинакова. По- тенциал в обоих одинаково нагруженных проводах изменяется одинаково, при этом информатив- ная разность потенциалов остается без изменений.

Существуют два варианта интерфейса: RS-422 и RS-485.

RS-422 – полнодуплексный интерфейс. Прием и передача идут по двум отдельным парам проводов. На каждой паре проводов может быть только по одному передатчику.

RS-485 – полудуплексный интерфейс. Прием и передача идут по одной паре проводов с раз-

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

Стандартные параметры интерфейсовRS-422RS-485
Допустимое число передатчиков / приемников1 / 1032 / 32
Максимальная длина кабеля1200 м1200 м
Максимальная скорость связи10 Мбит/с10 Мбит/с
Диапазон напряжений «1» передатчика+2. +10 В+1.5. +6 В
Диапазон напряжений «0» передатчика–2. –10 В–1.5. –6 В
Диапазон синфазного напряжения передатчика–3. +3 В–1. +3 В
Допустимый диапазон напряжений приемника–7. +7 В–7. +12 В
Пороговый диапазон чувствительности приемника±200 мВ±200 мВ
Максимальный ток короткого замыкания драйвера150 мА250 мА
Допустимое сопротивление нагрузки передатчика100 Ом54 Ом
Входное сопротивление приемника4 кОм12 кОм
Максимальное время нарастания сигнала передатчика10% бита30% бита

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что это rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что этоАппаратная реализация интерфейса – микросхемы приемопередатчиков с дифференциаль- ными входами/выходами (подключаемыми к линии) и цифровыми портами (подключаемыми к портам UART микроконтроллера).

D (driver) – передатчик; A – прямой дифференциальный вход/выход;

R (receiver) – приемник; B – инверсный дифференциальный вход/выход; DI (driver input) – цифровой вход передатчика; Y – прямой дифференциальный выход (RS-422); RO (receiver output) – цифровой выход приемника; Z – инверсный дифференциальный выход (RS-422) DE (driver enable) – разрешение работы передатчика;

RE (receiver enable) – разрешение работы приемника;

rts control что это. Смотреть фото rts control что это. Смотреть картинку rts control что это. Картинка про rts control что это. Фото rts control что этоДля работы приемопередатчика RS-485 с микроконтроллером цифровой выход приемника (RO) подключается к порту приемника UART (RX), а цифровой вход передатчика (DI) – к порту передатчика UART (TX). Поскольку на дифференциальной стороне приемник и передатчик со- единены, то во время приема нужно отключать передатчик, а во время передачи – приемник. Для этого служат управляющие входы – разрешение приемника (RE) и разрешения передатчика (DE). Так как вход RE инверсный, то его можно соединить с DE и переключать приемник и передатчик одним сигналом с любого порта контроллера. При уровне «0» – работа на прием, при «1» – на пе- редачу.

Приемник, получая на дифференциальных входах (AB) разность потенциалов (UAB) перево- дит их в цифровой сигнал на выходе RO. Чувствительность приемника может быть разной, но га- рантированный пороговый диапазон распознавания сигнала обычно составляет ± 200 мВ. То есть, когда UAB > +200 мВ – приемник определяет «1», когда UAB

Источник

Разводка (сигналы) последовательного интерфейса

Замечание: DCD иногда маркируется как CD

Сигналы могут иметь другое значение

Только 3 контакта из 9 имеют строго определенное значение: передача, прием и земля. Это аппаратные линии и вы не можете повлиять изменить из предназначение. Но все другие сигнальные линии управляются программно и могут быть (или подразумевается что могут) в большинстве своем другого назначения. Однако они могут прнимать только два состояния: высокое (установленное) (+12 вольт) и низкое (сброшенное) (-12 вольт). Установленное состояние это «включено» и сброшенное состояние это «выключено». Для примера, Advanced Serial Port Monitor (или точнее пользователь программы) может управлять сигналом DTR, в аппаратная часть в свою очередь подает на него напряжение 12 вольт с той или иной полярностью. Модем (или другое устройство) которое принимает сигнал DTR может интерпретировать его по-разному. В одном случае модем (в зависимости от модели и прошивки) может может занять телефонную линию если сигнал DTR сброшен. В другом случае модем проигнорировать сигнал DTR в сброшенном состоянии.

Это применимо ко всем 6-ти сигнальным линиям. Аппаратная часть только посылает и принимает эти сигналы, но действие зависит (если оно вообще есть) от программы (например, Advanced Serial Port Monitor) и конфигурации того оборудоввания, которое вы подключаете к последовательному порту.

Кабельные соединения между последовательными портами

Работа по последовательному интерфейсу имеет свои преимущества. Одна из причин это то, что все сигналы однонаправленные. Если контакт 2 отправляет данные (и не позволяет принимать другие сигналы) то очевидно, что нельзя подсоединить к контакту 2 контакт того же типа. Если вы все же сделаете это, то вы не смоежет не отсылать, ни принимать сигналы по этой линии. Есть два разных способа соединения устройств. Один из них подразумевает соединение двух устройств разного типа, когда контакт №2 одного отсылает данные на контакт №2 второго (который принимает этот сигнал). Это путь, когда вы соединяете компьютер (DTE) и модем (DCE). Также существует второй путь в котором устройства могут быть одного типа: соедините контакт отправки данных №2 с контактом №3, принимающим данные устройства того же типа. Это путь, когда можно соединять два компьютера (DTE-в-DTE). Тип кабеля, использумый в этом случае называется null-modem cable (нуль-модемный кабель) поскольку он соединяет два компьютера без использования модемов. Нуль-модемный также иногда называют перевернутым кабелем, т.к. провода между контактами 2 иd 3 идут наоборот. Пример выше приведен для контактов 25-ти контактного разъема, но также соответственно можно использовать и 9-ти контактный разъем.

Контроль передачи данных типа RTS/CTS и DTR/DSR

Это так называемый «аппаратный» контроль передачи данных. Контроль передачи данных был раскрыт более подробно на другой странице в разедлее «Контроль передачи данных», однако контакты и сигналы не были описаны. Advanced Serial Port Monitor поддерживает RTS/CTS и DTR/DSR типы аппаратного контроля передачи данных. Только RTS/CTS тип контроля предачи данных будет рассмотрен здесь, поскольку DTR/DSR тип контроля передачи данных функционирует по тому же принципу. Для того, чтобы активировать RTS/CTS контроль передачи данных необходимо только выбрать эту опцию в настройках Advanced Serial Port Monitor.

Итак, если DTE устройство (такое как компьютер) хочет прекратить передачу данных, оно сбрасывает состояние сигнала RTS. Сброшенный сигнал»Запрос на передачу (Request to Send)» (-12 вольт) означает «не посылать запросы ко мне» (прекратить передачу). Когда компьютер готов для принятия очередного блока данных он устанавливает сигнал RTS (+12 вольт) и поток данных возобновляется. Сигналы контроля передачи данных всегда посылаются в противоположном направлении от потока данных контроль которых они осуществляют. DCE устройства (модемы) работают по тому же принципу, только посылают сигнал на контакте CTS. Поэтому тип контроля передачи даных RTS/CTS использует 2 линии (провода).

Источник

Serial Programming Guide for POSIX Operating Systems

Руководство содержит следующие главы и приложения:

Эта глава является введением в передачу данных по последовательным линиям, RS-232 и другие стандарты которые используются для большинства компьютеров, а также о том как получить доступ к последовательным портам из C программы.

Компьютер передает информацию (данные) посылками в один или более битов за один раз. Последовательная передача подразумевает передачу данных посылкой в один бит. Последовательная передача данных применяется в большинстве сетевых устройств, клавиатурах, мышках, модемах и терминалах.

Очень часто скорость последовательной передачи данных выражается в количестве битов переданных за секунду (bits-per-second / «bps») или в бодах («baud»). Это представляет только количество единиц и нулей которые могут быть переданы в течение одной секунды. На заре компьютерной техники, скорость передачи в 300 бод считалась достаточно быстрой, но в наше время компютеры могут обеспечить скорость передачи по RS-232 вплоть до 430,800 бод! Возможно, когда скорость передачи достигает 1,000, вы видите скорость показываемую в кило бодах, или kbps (т.е. 9.6k, 19.2k, и т.д.). Для скоростей выше 1,000,000 значения показываются в мега бодах, или Mbps (т.е. 1.5Mbps).

Когда говорят об устройствах последовательной передачи или о последовательных портах, их называют как Data Communications Equipment («DCE») или Data Terminal Equipment («DTE»). Различие между ними в том, что каждая сигнальная пара приема и передачи у них поменяна местами. При подключении двух DTE (или двух DCE) используется нуль-модемный кабель или адаптер, который меняет местами сигнальные пары приема и передачи.

Также, вы можете встретить еще два стандарта на последовательный интерфейс: RS-422 и RS-574. RS-422 использует более низкое напряжение и дифференциальные сигналы, что позволяет увеличить длину кабеля до 1000 футов (300 метров). RS-574 описывает 9-контактный последовательный PC разъем и напряжения.

Стандарт RS-232 описывает 18 различных сигналов для обеспечения последовательного обмена. Однако, только шесть из них реально доступны в окружении UNIX.

Технически, логическая земля сигналом не является, без нее ни один из других сигналов не будет работать.

Сигнал TXD содержит данные передаваемые с вашей рабочей станции на компьютер или устройство, подключенное к другому концу линии (например, модем). Напряжение уровня mark (on) интерпретируется как значение 1, а напряжение уровня space (off) интерпретируется как значение 0.

Сигнал RXD содержит данные передаваемые с компьютера или устройства, подключенного к другому концу линии, на вашу рабочую станцию. Также как и в случае сигнала TXD уровни mark и space интерпретируются как значения 1 и 0, соответственно.

Сигнал DCD принимается от компьютера или устройства, подключенного к другому концу линии. Уровень space (off) индицирует, что компьютер или устройство в текущий момент подключено к линии. Сигнал DCD не всегда используется и не всегда присутствует в реализации.

Сигнал DTR генерируется вашей рабочей станцией и указывает компьютеру или устройству, подключенному к другому концу линии, что вы готовы (уровень space (off)) или не готовы (уровень mark (on)) к передаче данных. Обычно сигдал DTR автоматически устанавливается в состояние готовности когда вы открываете (open) последовательный интерфейс вашей рабочей станции.

Сигнал CTS принимается с другого конца последовательной линии. Уровень space (off) индицирует готовность к посылке последовательных данных с вашей рабочей станции.

Обычно, CTS используется для управления потоком передачи данных от вашей рабочей станции на другой конец линии.

Сигнал RTS, установленный в состояние уровня space (off) вашей рабочей станции, указывает о готовности вашей рабочей станции к пересылке данных.

Сигнал RTS, также как и сигнал CTS, используется для управления потоком передачи данных между вашей рабочей станцией и компьютером или устройством, подключенным к другому концу последовательной линии. Большинство рабочих станций удерживают этот сигнал в состоянии уровня space (off) все время.

Для того чтобы компьютер правильно «понимал» приходящие к нему последовательные данные, необходим какой-то способ определения где завершается передача одного символа и начинается передача нового символа. Это руководство описывает исключительно асинхронную передачу данных.

Формат передачи асинхронных данных обычно выражается как «8N1», «7E1», и т.д. Это указывает «8 битов данных, нет четности, 1 стоп-бит», и «7 битов данных, четная (even) четность, 1 стоп-бит» соответственно.

Half duplex (полудуплекс) подразумевает, что компьютер не может одновременно передавать и/или принимать данные. Обычно это подразумевает, что существует только один канал передачи данных. Однако, это не подразумевает, что любой из сигналов RS-232 не используется. Скорее это подразумевает, что комуникационная линия использует какой-нибудь другой стандарт, отличный от RS-232, который не поддерживает полнодуплекснуюработу.

Часто бывает необходимо регулировать поток данных при передаче между двумя последовательными интерфейсами. Это может быть вызвано ограничениями в промежуточной цепи последовательной связи, одном из последовательных интерфейсов или устройстве хранения информации. Обычно, для решения этой задачи, используются два метода.

Первый метод, часто называемый как «программное» управление потоком передачи данных («software» flow control), использует специальные символы для начала (XON или DC1, восьмеричное значение 021) или остановки (XOFF или DC3, восьмеричное значение 023) передачи данных. Эти символы объявлены в American Standard Code for Information Interchange («ASCII»). Эти коды полезны при передаче текстовой информации, однако они не могут быть использованы припередаче других типов данных без дополнительного специального программирования.

Второй метод, называемый как «аппаратное» управление потоком передачи данных («hardware» flow control), вместо специальных символов использует сигналы CTS и RTS интерфейса RS-232. Приемник устанавливает CTS в уровень space (off) когда он готов к приему последующих данных и в уровень mark (on) когда он не готов. Также, передатчик устанавливает RTS в уровень space (off) когда он готов к передаче последующих данных. Поскольку аппаратный метод управления потоком использует различные сигналы он намного быстрее программного метода, которому требуется пересылка множества битов для выполнения той же задачи. Однако, CTS/RTS управление потоком не всегда поддерживается аппаратной частью или операционной системой.

Обычно, сигнал приема или посылки данных находится в состоянии уровня mark (on) до начала передачи нового символа. Если сигнал переходит в состояние уровня space (off) на длительный период времени, обычно от 1/4 до 1/2 секунды, то говорят о возникновении условия break.

Иногда break используется для переустановки (сброса) коммуникационной линии или изменения режима работы коммуникационного оборудования подобного модему. Глава 3, Управление модемом описывает это более подробно.

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

Каждый протокол объявляет определенные битовые последовательности для представления начала и конца пакета данных. Каждый протокол также описывает битовые последовательности которые используются при отсутствии данных. Эти битовые последовательности позволяют компьютеру обнаружить начало пакета данных.

Поскольку протоколы синхронной передачи не используют биты посимвольной синхронизации, они предоставляют как минимум 25% увеличение производительности по сравнению с асинхронной передачей данных, и пригодны для удаленной сетевой работы и конфигурирования более чем двух последовательных интерфейсов.

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

Подобно всем устройствам, UNIX предоставляет доступ к последовательным портам через файлы устройств ( device files ). Для доступа к последовательному порту вы просто открываете соответствующий файл устройства.

На данный момент мы будем предпологать, что файл устройства доступен всем пользователям. Код для открытия последовательного порта 1 на рабочей станции sgi ® под управлением IRIX выглядит следующим образом:

Другие системы могут потребовать соответствующее имя для файла устройства, но остальной ко останется таким же самым.

Опции открытия

Вы можете заметить, что когда мы открывали файл устройства, мы использовали два дополнительных флага вместе с режимом чтение+запись:

Флаг O_NOCTTY говорит UNIX, что эта программа не хочет быть управляющим терминалом для этого порта. Если вы не укажете этого, то любой ввод (подобный сигналу абортирования от клавиатуры или что-нибудь подобное) будет затрагивать ваш процесс. Программы подобные getty(1M/8) используют эту возможность при старте логин-процесса, но обычно пользовательская программа не нуждается в таком поведении.

Флаг O_NDELAY говорит UNIX, что эта программа не заботится о состоянии сигнала DCD, т.е. что другой конец линии запущен. Если вы не укажете этот флаг, то ваш процесс «заснет» до тех пор пока на линии DCD не появится уровень space (off).

Чтение данных с порта несколько сложнее. Когда вы работаете с портом в режиме не структурированного посимвольного обмена (raw data mode), каждый системный вызов read(2) будет каждый раз возвращать число символов реально прочитанных в буфер ввода. Если в текущий момент нет символов доступных для чтения, то вызов будет блокироваться (wait) до тех пор пока не появятся символы для чтения, или закончится счетчик таймаута, или обнаружится какая-нибудь ошибка. Функцию read можно выполнить так, что она вернет управление немедленно. Для этого она должна быть оформлена следующим образом:

Опция FNDELAY указывает функции read возвращать 0 если нет символов доступных для чтения из последовательного порта. Для восстановления нормально поведения (с блокировками), необходимо вызвать fcntl() без опции FNDELAY :

Для закрытия последовательного порта нужно использовать системный вызов close :

Эта глава описывает как сконфигурировать последовательный порт из C используя POSIX termios интерфейс.

Никогда не инициализируйте поле c_cflag (или любой другой флаг) непосредственно; вы всегда должны использовать битовые операторы AND, OR, или NOT для установки или очистки битовых полей. Различные версии операционных систем (и даже патчи) могут и используют биты по-разному, поэтому использование битовых операторов предотвратит вас от затирания битового флага необходимого в новом последовательном драйвере.

Установка скорости передачи

Функции cfsetospeed(3) и cfsetispeed(3) предназначены для установки скорости передачи данных в структуре termios вне зависимости от интерфейса операционной системы. Обычно, вам потребуется использовать следующий код для установки скорости передачи:

Установка размеров символов


Установка контроля четности

Также как и в случае с размером принимаемых символов, вы должны вручную устанавливать разрешение генерации бита четности и указывать тип проверки на четность. Драйвера последовательных устройств UNIX поддерживают учтановку проверки на четность, проверки на нечетность и отсутствие проверки на четность. Также, при более хитром кодировании, может быть симулирован пробел (space parity) бита четности.

Установка аппаратного управления потоком передаваемых данных

Подобно вышеуказанному, для деактивирования аппаратного управления потоком передаваемых данных:

?

Сигналы и контакты интерфейса RS232
Разъем 9-ти
пиновый #
Разъем 25
пиновый #
ОбозначениеПолное наименованиеНаправлениеЧто значит
ECHOPRTEcho erased character as character erased
ECHOKEBS-SP-BS entire line on line kill
FLUSHOOutput being flushed
PENDINRetype pending input at next read or input char
TOSTOPПосылка SIGTTOU для фонового вывода

Выбор канонического ввода


Выбор неканонического (Raw) ввода


Замечание об эхо ввода

Никогда не разрешайте эхо ввода ( ECHO, ECHOE ) когда посылаете команды модему или другому компьютеру который производит эхо вводимых символов, поскольку вы получите цикл обратной связи между двумя последовательными интерфейсами!

Установка контроля четности ввода

Опция IGNPAR несколько опасна, поскольку указывает драйверу последовательного порта игнорировать ошибки четности и передавать принятые данные как буд-то ошибок не было. Это может быть полезно при тестировании качества коммуникационной связи, но, в основном, не используется по практическим соображениям.

Установка программно управляемого управления потоком передачи данных

Для отмены программно управляемого управления потоком передачи данных вам необходимо просто замаскировать эти биты:

Выбор обработанного вывода

Обработанный вывод выбирается установкой опции OPOST в поле c_oflag :

Из всех различных опций, возможно, вы будете использовать опцию ONLCR которая отображает символ новой строки в пару символов CR-LF. Остальные опции вывода скорее исторические и относятся к тому времени, когда строчные принтеры и терминалы не могли справиться с потоком последовательных данных.

Выбор необработанного (raw) вывода

Выбор необработанного (raw) вывода устанавливается сбросом опции OPOST в поле c_oflag :

Когда опция OPOST сброшена, все остальные биты опций в поле c_oflag игнорируются.

Установка символов программного управления потоком передаваемых данных

Элементы VSTART и VSTOP массива c_cc содержат символы используемые для программного управления потоком передаваемых данных. Обычно они должны быть установлены в DC1 (восьмеричное 021) и DC3 (восьмеричное 023), что представляет стандарт ASCII как символы XON и XOFF.

Установка таймаутов чтения

VMIN определяет минимальное число символов для чтения. Если VMIN установлено в 0, то значение VTIME определяет время ожидания для каждого читаемого символа. Примечательно, что это не подразумевает, что вызов read для N байтов будет ждать поступление N символов. Тайаут произойдет в случае задержки приема любого одиночного символа и вызов read вернет число непосредственно доступных символов (вплоть до числа которое вы запросили).

Эта глава содержит базовые понятия о телефонных коммуникациях посредством модулятора/демодулятора (модем). Представленные примеры используют де-факто стандартное множество «AT» команд модема.

Телефонные модемы которые доступны в настоящее время могут передавать данные по телефонной линии со скоростью около 53,000 битов в секунду, или 53kbps. В дополнение, большинство модемов используют технологию сжатия данных которая может повысить скорость передачи некоторых типов данных вплоть до 100kbps.

Следующее что вам необходимо сделать, это установить связь с модемом. Наилучший способ сделать это посылкой модему «AT» команды. Это также позволяет ‘хитрым’ модемам определить какую скорость передачи данных вы используете. Когда модем корректно подключен и включен, он будет выдавать ответ «OK».

Большинство модемов использует множество «AT» команд, называемых так поскольку каждая команда начинается с символов «AT». Каждая посылаемая команда это символьная строка начинающаяся в первом столбце с символов «AT» и сопровождаемая специфическими командами и символом возврата каретки (CR, или восьмеричное 015). После обработки команды модем будет отвечать одним из нескольких текстовых сообщений, в зависимости от команды.

Команда ATD производит набор указанного номера. В дополнение к цифрам и дефисам вы можете указать тип набора тональный («T») или импульсный («P»), паузу на одну секунду («,»), и ожидание тональной посылки («W»):

Модем ответит одним из следующих сообщений:

Также большинство модемов вешают трубку при сбросе сигнала DTR; вы можете выполнить это установкой скорости передачи данных в 0 как минимум на 1 секунду. Также, сброс сигнала DTR переводит модем в командный режим.

После того как модем успешно повесит трубку, он выдаст сообщение «NO CARRIER». Если модем останется на линии, то он выдаст сообщение «CONNECT» или «CONNECT baud».

Команда ATZ производит сброс модема. Модем будет отвечать строкой «OK».

И в заключение, когда работаете с модемом, убедитесь, что вы используете скорость передачи которую поддерживает модем. Хотя многие модемы выполняют автоматическое определение скорости передачи, некоторые имеют ограничения (общее ограничение 19.2kbps) которые вы должны соблюдать.

Системный вызов ioctl принимает три аргумента:

Для получения статусных битов, необходимо вызвать ioctl с указателем на integer переменную для сохранения битов:

Вызов TIOCMSET ioctl устанавливает статусные биты «модема» описанные выше. Для сброса сигнала DTR вы можете выполнить следующее:

Биты, которые могут быть установлены, зависят от операционной системы, драйвера и используемого модема. Обратитесь к документации на вашу операционную систему для более подробной информации.

Вызов FIONREAD ioctl получает число байтов в приемном буфере последовательного порта. Также как и в случае с TIOCMGET вам необходимо передать указатель на integer переменную для сохранения результата:

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

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

Большинство GUI Toolkits предоставляет интерфейс к вызову select ; позже в этой главе мы обсудим библиотеку X Intrinsics («Xt»).

Системный вызов select принимает 5 аргументов:

Предположим: что мы читаем данные от последовательного порта и от сокета. Мы хотим проверить ввод от обоих файловых дескрипторов, и хотим уведомлять пользователя если в течение 10 секунд не было получено никаких данных. Для выполнения этого нам понадобится использовать системный вызов select :

Для определения того какой файловый дескриптор имеет ожидание ввода, мы используем макрос FD_ISSET для проверки множества ввода для каждого файлового дескриптора. Если флаг файлового дескриптора установлен, то условие присутствует (в нашем случае, ожидание ввода) и мы должны это как-то обработать.

Библиотека X Intrinsics предоставляет интерфейс к системному вызову select через функции XtAppAddInput(3x) и XtAppRemoveInput(3x) :

Системный вызов select используется на внутреннем уровне для реализации таймаутов, и проверки ввода от X сервера. Эти функции могут быть использованы с любым Xt-образным инструментарием, включая Xaw, Lesstif и Motif.

Это приложение предоставляет информацию о цоколевках большинства последовательных портов с которыми вы можете столкнуться.

RS-232 встречается в трех модификациях (A, B, C) и использует 25-контактный разъем (розетка):

RS-422 также использует 25-контактный разъем (розетка), но с различающимися сигналами:

Интерфейс RS-574 используется исключительно производителями PC и использует 9-штырьковый разъем (вилка):

Старое оборудование SGI использует 9-штырьковый разъем (розетка). В отличие от RS-574, цоколевка SGI больше соответствует RS-232:

Рабочие станции SGI Indigo, Indigo2, и Indy используют 8-контактный MiniDIN разъем Apple для своих последовательных портов:

Это приложение перечисляет управляющие коды ASCII и их названия.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *