Статьи

послідовний порт

  1. UNIX [ правити | правити код ]
  2. Windows [ правити | правити код ]
  3. OS / 2 [ правити | правити код ]

Послідовний порт ( англ. serial port, COM-порт [1] , англ. communications port) - сленгове назва інтерфейсу стандарту RS-232 , Яким масово оснащувалися персональні комп'ютери . Порт має назву «послідовним», тому що інформація через нього передається по одному біту , Послідовно біт за бітом (на відміну від паралельного порту ). Незважаючи на те, що деякі інтерфейси комп'ютера (наприклад, Ethernet , FireWire і USB ) Теж використовують послідовний спосіб обміну інформацією, назва «послідовний порт» закріпилося за портом стандарту RS-232 .

Найбільш часто для послідовного порту персональних комп'ютерів використовується стандарт RS-232C. Раніше послідовний порт використовувався для підключення терміналу, пізніше для модему або миші . Зараз він використовується для з'єднання з джерелами безперебійного живлення , Для зв'язку з апаратними засобами розробки вбудованих обчислювальних систем , Супутниковими ресиверами, касовими апаратами, программаторами, з приладами систем безпеки об'єктів, а також з багатьма іншими пристроями.

За допомогою COM-порту можна з'єднати два комп'ютери, використовуючи так званий «нуль-модемний кабель» (див. Нижче). Використовувався з часів MS-DOS для передачі файлів з одного комп'ютера на інший, в UNIX для термінального доступу до іншої машини, а в Windows (навіть сучасної) - для відладчика рівня ядра.

Перевагою технології є крайня простота обладнання. Недоліком є ​​низька швидкість, великі розміри роз'ємів, а також часто високі вимоги до часу відгуку ОС і драйвера і велика кількість переривань (одне на половину апаратної черзі, тобто 8 байт).

На материнських платах провідних виробників (наприклад, Intel ) Або готових системах (наприклад, IBM , Hewlett-Packard , Fujitsu Siemens Computers ) Для послідовного порту прийнято умовне позначення COM або RS-232.

Найбільш часто використовуються стандартизовані в 1969 році D-образні роз'єми: 9- і 25-контактні, (DB-9 і DB-25 відповідно). Раніше використовувалися також DA-31 і круглі восьмиконтактних DIN-8. Максимальна швидкість передачі в звичайному виконанні порту становить 115 200 бод .

Широко поширений в IBM PC-сумісних комп'ютерах , Інтерфейс RS-232 не придатний для розважальних і офісних завдань, зате широко використовується в прикладних задачах, тому спроби позбутися в сучасних материнських платах від спадщини старих інтерфейсів приречені. Специфікація PC99 - один з безуспішних прикладів нажитися [ джерело? ] На масштабної заміни «застарілого» обладнання. Про неї пишуть [ джерело? ], Що вона «нині застаріла і представляє виключно історичний інтерес», а виробництво «застарілого» обладнання процвітає. В офісних і домашніх комп'ютерах, де відстані і перешкоди невеликі, а швидкість обміну затребувана, RS-232 практично витіснений інтерфейсом USB .

Існують стандарти на емуляцію послідовного порту над USB і над Bluetooth (ця технологія в значній мірі і проектувалася як «бездротової послідовний порт»).

Проте програмна емуляція даного порту широко використовується і сьогодні. Так, наприклад, практично всі мобільні телефони емулюють всередині себе класичний COM-порт і модем для реалізації тетерінга - доступу комп'ютера в Інтернет через GPRS / EDGE / 3G / 4G обладнання телефону. При цьому для фізичного підключення до комп'ютера використовується USB , Bluetooth або Wi-Fi [2] .

Також програмна емуляція даного порту надається «гостям» віртуальних машин VMWare і Microsoft Hyper-V , Основна мета при цьому - підключення відладчика рівня ядра Windows до «гостю».

У вигляді UART , Що відрізняється рівнями напруги і відсутністю додаткових сигналів, присутній практично у всіх мікроконтролерах, крім самих-самих маленьких, SoC, платах розробників, а також присутній на платах більшої частини пристроїв, хоча роз'єм і не виведений на корпус. Така популярність пов'язана з простотою цього інтерфейсу, як з фізичної точки зору, так і з легкістю доступу до порту з боку ПО в порівнянні з іншими інтерфейсами.

Роз'єм має контакти:

DTR (Data Terminal Ready - готовність до прийому даних) - вихід на комп'ютері, вхід на модемі. Чи означає готовність комп'ютера до роботи з модемом. Скидання цієї лінії викликає майже повне перезавантаження модему в первісний стан, в тому числі кидання трубки (деякі керуючі регістри виживають після такого скидання). В UNIX це відбувається в разі, якщо всі додатки закрили файли на драйвері послідовного порту. Миша використовує цей провід для отримання харчування.

DSR (Data Set Ready - готовність до передачі даних) - вхід на комп'ютері, вихід на модемі. Чи означає готовність модему. Якщо ця лінія знаходиться в нулі - то в ряді ОС стає неможливо відкрити порт як файл.

RxD (Receive Data - прийом даних) - вхід на комп'ютері, вихід на модемі. Потік даних, що входить в комп'ютер.

TxD (Transmit Data - передача даних) - вихід на комп'ютері, вхід на модемі. Потік даних, що виходять з комп'ютера.

CTS (Clear to Send - готовність передачі) - вхід на комп'ютері, вихід на модемі. Комп'ютер повинен призупинити передачу даних, поки цей провід не буде виставлений в одиницю. Використовується в апаратному протоколі управління потоком для запобігання переповнення в модемі.

RTS (Request to Send - запит на передачу) - вихід на комп'ютері, вхід на модемі. Модем зобов'язаний призупинити передачу даних, поки цей провід не буде виставлений в одиницю. Використовується в апаратному протоколі управління потоком для запобігання переповнення в обладнанні і драйвер.

DCD (Carrier Detect - наявність несучої) - вхід на комп'ютері, вихід на модемі. Зводиться модемом в одиницю після встановлення з'єднання з модемом з того боку, скидається в нуль при розриві зв'язку. Апаратура комп'ютера може видавати переривання при настанні такої події.

RI (Ring Indicator - сигнал виклику) - вхід на комп'ютері, вихід на модемі. Зводиться модемом в одиницю після виявлення сигналу телефонного дзвінка. Апаратура комп'ютера може видавати переривання при настанні такої події.

SG (Signal Ground - сигнальна земля) - загальний сигнальний провід порту, не є загальною землею, як правило, ізольований від корпусу ЕОМ або модему.

В нуль-модемном кабелі використовуються дві перехрещені пари: TXD / RXD і RTS / CTS.

Початково в IBM PC і IBM PC / XT апаратура порту була побудована на мікросхемі UART 8250 фірми National Semiconductor, потім мікросхема була замінена на 16450, програмно сумісної з попередніми, але дозволяла використовувати швидкості аж до 115200 біт в секунду, потім з'явилася мікросхема 16550, що містила двонаправлений FIFO буфер даних для зниження навантаження на контролер переривань. В даний час включена в SuperIO мікросхему на материнській платі разом з рядом інших пристроїв.

UNIX [ правити | правити код ]

COM-порти в операційній системі Unix ( Linux ) - це файли символьних пристроїв. Зазвичай ці файли розташовуються в каталозі / dev і називаються

  • ttyS0, ttyS1, ttyS2 і т. д. в Linux
  • ttyd0, ttyd1, ttyd2 і т. д. (або ttyu0, ttyu1, ttyu2 і т. д. починаючи з версії 8.0) в FreeBSD
  • ttya, ttyb, ttyc і т. д. в Solaris
  • ttyf1, ttyf2, ttyf3 і т. д. в IRIX
  • tty1p0, tty2p0, tty3p0 і т. д. в HP-UX
  • tty01, tty02, tty03 і т. д. в Digital Unix
  • ser1, ser2, ser3 і т. д. в QNX

Для програмного доступу до СОМ-порту необхідно відкрити на читання / запис відповідний файл і зробити виклики спеціальних функцій tcgetattr (для того, щоб дізнатися про поточні настройки) і tcsetattr (щоб встановити нові настройки). Також може знадобитися зробити виклики ioctl з певними параметрами. Після цього при записі в файл дані будуть відправлятися через порт, а при читанні програма буде отримувати вже прийняті дані з буфера СОМ-порту.

Пристрої з іменами «ttyxx» використовуються як серверні, тобто додаток, що відкрила даний пристрій, зазвичай очікує вхідного дзвінка від модему. Класичним таким додатком, використовуваним за замовчуванням, є getty , Яка очікує вхідного дзвінка, далі налаштовує COM-порт відповідно до файлами конфігурації, виводить туди "login:", приймає ім'я користувача і запускає як нащадка команду «login ім'я користувача», зі стандартним вводом і виводом, перенаправлення в COM-порт. Ця команда в свою чергу запитує і перевіряє пароль, і в разі успіху запускає (не як нащадка, а замість себе викликом execve в тому ж процесі) default user shell, прописаний у файлі / etc / passwd.

Ця технологія історично виникла в 1970-і роки, коли під ОС UNIX використовувалися комп'ютери на кшталт PDP-11 (В СРСР серія називалася СМ ЕОМ ) або VAX , Що дозволяють підключення багатьох терміналів для роботи багатьох користувачів. Термінали - а значить, і весь інтерфейс користувача - при цьому підключалися через послідовні порти, з можливістю підключення замість терміналу модему і подальшого дозвону на комп'ютер по телефону. До сих пір в UNIX-подібних ОС існує термінальний стек, і зазвичай 3 реалізації терміналів - послідовний порт, консоль текстового режиму екрану + клавіатура, і «зворотна петля» в один з відкритих файлів керуючого додатки (так реалізовані telnetd, sshd і xterm).

Клієнтські пристрої послідовного порту, призначені для здійснення дзвінків зовні, в багатьох UNIX (не у всіх) називаються cuaxx.

Так як послідовний порт в UNIX доступний тільки через термінальний стек, він може бути керуючим терміналом для процесів і груп (посилати SIGHUP при розриві зв'язку від модему і SIGINT при натисканні Ctrl-C), на рівні ядра підтримувати редагування останньої введеної рядки клавішами стрілок, і т. д. для відключення цієї можливості з метою перетворення пристрою в «трубу» для потоку байт необхідні виклики ioctl.

Windows [ правити | правити код ]

З послідовними портами в Win32 працюють як з файлами. Для відкриття порту використовується функція CreateFile. Портів може бути багато, тому вони позначаються як COM1, COM2 і т. Д. По порядку виявлення драйверів відповідних пристроїв. Перші 9 портів доступні в тому числі як іменовані канали для передачі даних (доступні по іменах «COM1», «COM2», ...), такий метод доступу вважається застарілим. Рекомендується до всіх портів звертатися як до файлів (за іменами «\\. \ COM1», «\\. \ COM2», ... «\\. \ COMx»).

Пошук PnP-імен пристроїв в системі здійснюється викликом SetupDiGetClassDevs. У реєстрі існує розділ HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM, в якому відображаються наявні в даний момент COM-порти.

Для кожного порту в реєстрі є розділ. Ці розділи мають такі імена:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Serial \ Parameters \ Serial10000,

де останнє значення «Serial10000» - унікальний номер для кожного нового доданого в систему COM-порту, для другого - «Serial10001» і т. д.

OS / 2 [ правити | правити код ]

Наявний драйвер COM.SYS підтримує тільки 4 COM-порту, кожен з яких повинен мати свою лінію переривань. Для обслуговування COM-портів із загальною лінією переривання необхідно скористатися драйвером SIO [3] .

У деяких випадках можливе застосування спрощеного варіанту кабелю, в якому задіюються тільки контакти 2, 3 і 5.

  • Переклад керівництва по програмуванню СОМ-порту в POSIX операційних системах
  • MSDN. Serial Communications (Eng-1995)
  • Програмування порту на java - не дозволяє працювати з Windows, на відміну від офіційних пакетів від Sun.
  • jSSC (Java Simple Serial Connector) - бібліотека для роботи з послідовним портом з Java. Підтримує Win32 (Win98-Win8), Win64, Linux (x86, x86-64, ARM), Solaris (x86, x86-64), Mac OS X 10.5 and higher (x86, x86-64, PPC, PPC64).
  • Програмування COM порту на C ++ під Windows. Готова бібліотека, вихідні тексти, приклади програм.
  • Яшкардін В.Л. Послідовний порт. Програмування COM-порту в Windows і MS-DOS (неопр.). SoftElectro (2009). Дата обігу 18 жовтня 2010 року. Читальний зал 8 лютого 2012 року.

Новости