serial link что это
serial link
Смотреть что такое «serial link» в других словарях:
Serial digital interface — (SDI) refers to a family of video interfaces standardized by SMPTE. [cite book | title = Digital Video and HDTV | author = Charles A. Poynton | publisher = Morgan Kaufmann | year = 2003 | isbn = 1558607927 | url = http://books.google.com/books?id … Wikipedia
Serial ATA — SATA redirects here. For other uses, see SATA (disambiguation). Serial ATA (SATA) From top to bottom, SATA Certification Logo, SATA cable, and two first generation (1.5 Gbit/s) SATA data connectors on a … Wikipedia
Serial communication — In telecommunication and computer science, serial communication is the process of sending data one bit at one time, sequentially, over a communication channel or computer bus. This is in contrast to parallel communication, where several bits are… … Wikipedia
Serial Attached SCSI — (SAS) is a data transfer technology designed to move data to and from computer storage devices such as hard drives and tape drives. It is a point to point serial protocol that replaces the parallel SCSI bus technology that first appeared in the… … Wikipedia
Serial Shooter — Background information Birth name Dale Shawn Hausner Samuel John Dieteman Killings Number of victims: 8 Span of killings May, 2005–July 30, 2006 … Wikipedia
Serial Experiments Lain — DVD box set of Serial Experiments Lain Genre … Wikipedia
Serial ATA — (SATA, auch S ATA/Serial Advanced Technology Attachment) ist eine hauptsächlich für den Datenaustausch zwischen Prozessor und Festplatte entwickelte Verbindungstechnik. Serial ATA Logo … Deutsch Wikipedia
Serial number — from an identity document A serial number is a unique number assigned for identification which varies from its successor or predecessor by a fixed discrete integer value. Common usage has expanded the term to refer to any unique alphanumeric… … Wikipedia
Serial — Serial, anything in the form of a series, can refer to several things:Art and literature*Serial, a format by which a story is told in installments **Serial (film), films released in chapters for viewing in cinemas, particularly in the 1930s and… … Wikipedia
Link (The Legend of Zelda) — Link (character) and Link (fictional character) redirect here. For other uses, see Link (disambiguation). Link Link, as he appears in official artwork for The Legend of Zelda Series The Leg … Wikipedia
Serial Digital Interface
Содержание
Существует несколько стандартов SDI:
Эти стандарты используются для передачи некомпрессированных и некодированных цифровых видео сигналов (могут также иметь вложенные аудио потоки и/или таймкод) в профессиональном телевизионном оборудовании. Передача потока данных 270 Мбит/с возможна на расстояния до 300 м по коаксиальному кабелю.
Электрический интерфейс
В различных стандартах цифрового последовательного интерфейса используется один (и более) коаксиальный кабель волновым сопротивлением 75 Ом с разъёмами типа BNC. Такой же кабель используется для аналогового видео, но для цифрового потока предпочтительнее кабели более высокого качества. Размах сигнала 800 мВ (±10 %). Затухание сигнала при передаче на большие расстояния могут компенсироваться на приёмной стороне, что делает возможным передачу потока 270 Мбит/с на расстояние до 300 м. Для HD-потоков расстояние обычно не более 100 м.
Для передачи цифрового компонентного некомпрессированного видеосигнала используется канальное кодирование с модифицированным кодом без возвращения к нулю (БВНМ) в сочетании со скремблированием. Интерфейс является самосинхронизируемым. Кадровая синхронизация осуществляется специальным синхронизирующим пакетом данных, состоящим из последовательности подряд идущих 10 единиц и 20 нулей (20 единиц и 40 нулей для HD).
Стандарты
Стандарт | Название | Битрейт | Примеры видеоформатов |
---|---|---|---|
SMPTE 259M | SD-SDI | 270 Мбит/с, 360 Мбит/с, 143 Мбит/с, и 177 Мбит/с | 480i, 576i |
SMPTE 344M | ED-SDI | 540 Мбит/с | 480p, 576p |
SMPTE 292M | HD-SDI | 1,485 Гбит/с и 1,485/1,001 Гбит/с | 720p, 1080i |
SMPTE 372M | Dual Link HD-SDI | 2,970 Гбит/с и 2,970/1,001 Гбит/с | 1080p |
SMPTE 424M | 3G-SDI | 2,970 Гбит/с и 2,970/1,001 Гбит/с | 1080p |
Скорости передачи данных
Для передачи SDI используются следующие скорости потока:
Дополнительные данные
SMPTE 259M, SMPTE 292M включают поддержку дополнительных данных по стандарту SMPTE 291M. Дополнительные данные представляют собой стандартизованный поток данных для передачи в составе потока цифрового последовательного интерфейса. Помимо видео, в поток SDI могут быть включены вложенный звук, субтитры, тайм-код, сигналы обнаружения ошибок (EDH) и другие виды метаданных.
Вложенный звук
Сигналы обнаружения ошибок (EDH)
Сигнал обнаружения ошибок (EDH) не исправляет ошибки, а только их детектирует. Также не существует механизма, при котором поля с выявленными ошибками могли бы быть переданы снова.
EDH не используется в стандарте высокой четкости HD-SDI, так как в стандарте заложена передача суммы контрольного значения циклического избыточного кода каждой строки.
СОДЕРЖАНИЕ
Электрический интерфейс
Стандарты
Стандарт | Имя | Введено | Битрейт | Примеры форматов видео |
---|---|---|---|---|
SMPTE 259M | SD-SDI | 1989 г. | 270 Мбит / с, 360 Мбит / с, 143 Мбит / с и 177 Мбит / с | 480i, 576i |
SMPTE 344M | ED-SDI | 2000 г. | 540 Мбит / с | 480p, 576p |
SMPTE 292M | HD-SDI | 1998 г. | 1,485 Гбит / с и 1,485 / 1,001 Гбит / с | 720p, 1080i |
SMPTE 372M | Двойной канал HD-SDI | 2002 г. | 2,970 Гбит / с и 2,970 / 1,001 Гбит / с | 1080p60 |
SMPTE 424M | 3G-SDI | 2006 г. | 2,970 Гбит / с и 2,970 / 1,001 Гбит / с | 1080p60 |
SMPTE ST 2081 | 6G-SDI | 2015 г. | 6 Гбит / с | 1080p120, 2160p30 |
SMPTE ST 2082 | 12G-SDI | 2015 г. | 12 Гбит / с | 2160p60 |
SMPTE ST 2083 | 24G-SDI | В развитии | 24 Гбит / с | 2160п120, 4320п30 |
Битрейт
В последовательном цифровом видеосигнале используются несколько битрейтов:
Прочие интерфейсы
8-битный параллельный цифровой интерфейс определяется Рек. МСЭ-R Рек. 601 ; это устарело (однако многие пункты в различных стандартах учитывают возможность 8-битного интерфейса).
Формат данных
В приложениях SD и ED формат последовательных данных определяется шириной 10 бит, тогда как в приложениях HD он имеет ширину 20 бит, разделенных на два параллельных 10-битных потока данных (известных как Y и C ). Поток данных SD устроен следующим образом:
Cb Y Cr Y ‘Cb Y Cr Y’
тогда как потоки данных HD организованы следующим образом:
Y ГГ ‘ГГ’ ГГ ‘ГГ’ C Cb Cr Cb Cr Cb Cr Cb Cr
75 МГц в HD), а два канала цветности (Cb и Cr) подвергаются субдискретизации по горизонтали и кодируются с половинной шириной полосы (6,75 МГц. или 37,5 МГц). Выборки Y, Cr и Cb совмещены (получены в один и тот же момент времени), а выборка Y ‘получена на полпути между двумя соседними выборками Y.
Пакеты синхронизации
В интерфейсах HD-SDI и Dual Link пакеты синхронизации должны происходить одновременно в потоках данных Y и C. (Некоторая задержка между двумя кабелями в двухканальном интерфейсе допустима; ожидается, что оборудование, поддерживающее двойное соединение, буферизует ведущий канал, чтобы позволить другому каналу наверстать упущенное). В интерфейсах SD-SDI и расширенного определения существует только один поток данных и, следовательно, только один пакет синхронизации за раз. Помимо вопроса о том, сколько пакетов появляется, их формат одинаков во всех версиях последовательно-цифрового интерфейса.
Счетчик строк и CRC
В последовательном цифровом интерфейсе высокой четкости (и в двухканальном HD) предусмотрены дополнительные контрольные слова для повышения надежности интерфейса. В этих форматах четыре отсчета, следующие сразу за пакетами EAV (но не за пакетами SAV), содержат поле контроля циклическим избыточным кодом и индикатор количества строк. Поле CRC предоставляет CRC предыдущей строки (CRC вычисляются независимо для потоков Y и C) и может использоваться для обнаружения битовых ошибок в интерфейсе. Поле счетчика строк указывает номер строки текущей строки.
CRC и количество строк не предусмотрены в интерфейсах SD и ED. Вместо этого можно дополнительно использовать специальный пакет вспомогательных данных, известный как пакет EDH, для обеспечения проверки данных с помощью CRC.
Нумерация строк и образцов
Нумерация ссылок
В случае видео 1080p60, 59,94 или 50 Гц по двойному каналу; каждая ссылка содержит действительный сигнал 1080i с той же скоростью поля. Первая ссылка содержит 1-ю, 3-ю и 5-ю строки нечетных полей и 2-ю, 4-ю, 6-ю и т. Д. Строки четных полей, а вторая ссылка содержит четные строки на нечетных полях и нечетные строки на четных. поля. Когда две ссылки объединяются, в результате получается изображение с прогрессивной разверткой с более высокой частотой кадров.
Вспомогательные данные
Конкретные приложения вспомогательных данных включают встроенное аудио, EDH, VPID и SDTI.
В двухканальных приложениях; вспомогательные данные в основном находятся по первичной ссылке; вторичный канал должен использоваться для дополнительных данных только в том случае, если на первичном канале нет места. Единственным исключением из этого правила является пакет VPID; на обоих каналах должен присутствовать действующий пакет VPID.
Встроенный звук
В двухканальных приложениях доступно 32 аудиоканала, так как каждый канал может передавать 16 каналов.
SMPTE ST 299-2: 2010 расширяет интерфейс 3G SDI, чтобы иметь возможность передавать 32 аудиоканала (16 пар) по одному каналу.
Поскольку интерфейс стандартной четкости не содержит контрольной суммы, CRC или другой проверки целостности данных, пакет EDH ( обнаружение и обработка ошибок ) может быть дополнительно помещен в вертикальный интервал видеосигнала. Этот пакет включает значения CRC как для активного изображения, так и для всего поля (за исключением тех строк, в которых может происходить переключение и которые не должны содержать полезных данных); оборудование может вычислить свой собственный CRC и сравнить его с полученным CRC, чтобы обнаружить ошибки.
EDH обычно используется только со стандартным интерфейсом определения; наличие слов CRC в интерфейсе HD делает пакеты EDH ненужными.
Пакеты VPID (или идентификатор полезной нагрузки видео ) все чаще используются для описания формата видео. В ранних версиях последовательного цифрового интерфейса всегда можно было однозначно определить формат видео путем подсчета количества строк и отсчетов между H- и V-переходами в TRS. С появлением двухканальных интерфейсов и стандартов сегментированных кадров это больше невозможно; таким образом, стандарт VPID (определенный SMPTE 352M) предоставляет способ однозначно и однозначно идентифицировать формат полезной нагрузки видео.
Полезная нагрузка видео и гашение
Активная часть видеосигнала определяется как те отсчеты, которые следуют за пакетом SAV и предшествуют следующему пакету EAV; где соответствующие пакеты EAV и SAV имеют бит V, установленный в ноль. Именно в активной части хранится фактическая информация об изображении.
Кодировка цвета
Обратите внимание, что масштабирование каналов яркости и цветности не идентично. Минимальный и максимальный из этих диапазонов представляют собой предпочтительные пределы сигнала, хотя полезная нагрузка видео может выходить за пределы этих диапазонов (при условии, что зарезервированные кодовые слова 0–3 и 1020–1023 никогда не используются для полезной нагрузки видео). Кроме того, соответствующий аналоговый сигнал может выходить за пределы этого диапазона.
Колориметрия
Другие цветовые кодировки
Интерфейсы Dual-link и 3 Гбит / с дополнительно поддерживают другие цветовые кодировки, помимо 4: 2: 2 YCbCr, а именно:
Если используется кодирование RGB, все три основных цвета кодируются тем же способом, что и канал Y; значение 64 (40 в шестнадцатеричном формате) соответствует 0 мВ, а 940 (3AC в шестнадцатеричном формате) соответствует 700 мВ.
Вертикальные и горизонтальные области гашения
Для частей вертикальной и горизонтальной областей гашения, которые не используются для вспомогательных данных, рекомендуется присвоить выборкам яркости кодовое слово 64 (40 шестнадцатеричных), а выборкам цветности назначить 512 (200 шестнадцатеричных); оба соответствуют 0 мВ. Допускается кодирование аналоговой информации о вертикальном интервале (такой как временной код вертикального интервала или тестовые сигналы вертикального интервала) без нарушения интерфейса, но такое использование нестандартно (и вспомогательные данные являются предпочтительным средством передачи метаданных). Однако преобразование аналоговых сигналов синхронизации и пакетных сигналов в цифровые не рекомендуется, как и в цифровом интерфейсе.
Различные форматы изображений имеют разные требования к цифровому гашению, например, все так называемые форматы 1080 строк HD имеют 1080 активных строк, но всего 1125 строк, а остальные представляют собой вертикальное гашение.
Поддерживаемые форматы видео
Различные версии последовательного цифрового интерфейса поддерживают множество видеоформатов.
Связанные интерфейсы
В дополнение к описанному здесь обычному последовательному цифровому интерфейсу существует несколько других подобных интерфейсов, которые аналогичны последовательному цифровому интерфейсу или содержатся в нем.
Интерфейс SDTI определяется SMPTE 305M. Интерфейс HD-SDTI определяется SMPTE 348M.
НАСКОЛЬКО Я
Стандарт ASI является частью стандарта цифрового видеовещания (DVB).
SMPTE 349M
Стандарт SMPTE 349M: передача форматов изображений из альтернативных источников через SMPTE 292M определяет средства инкапсуляции нестандартных видеоформатов и видео с более низкой скоростью передачи данных в интерфейсе HD-SDI. Этот стандарт позволяет, например, мультиплексировать несколько независимых видеосигналов стандартной четкости на интерфейс HD-SDI и передавать по одному проводу. Этот стандарт не просто регулирует синхронизацию EAV и SAV в соответствии с требованиями форматов с более низким битрейтом; вместо этого он предоставляет средства, с помощью которых весь формат SDI (включая слова синхронизации, вспомогательные данные и полезную нагрузку видео) может быть инкапсулирован и передан как полезная нагрузка обычных данных в потоке 292M.
Мультимедийный интерфейс высокой четкости (HDMI)
HDcctv
Стандарт HDcctv воплощает адаптацию SDI для приложений видеонаблюдения, не путать с TDI, аналогичным, но другим форматом для камер видеонаблюдения.
CoaXPress
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) бита четности.
Установка аппаратного управления потоком передаваемых данных
Подобно вышеуказанному, для деактивирования аппаратного управления потоком передаваемых данных:
?
Выбор канонического ввода
Выбор неканонического (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 и их названия.