Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП_сиспо.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.26 Mб
Скачать

1.2 Последовательный порт (com)

Плата Arduino Mega соединяется с компьютером по средством USB кабеля, при этом устройство отображается в компьютере в виде последовательного порта (COM – порта). Особенность последовательного порта в том, что данные по нему передаются последовательно, бит за батом, чем и обеспечена его связь с UART протоколом. Самым распространённым интерфейсом для работы с ком портом является RS-232 и представляет собой 9-ти контактный разъем типа DB-9M, представленный на рисунке 3. Назначение выводов представлено в таблице 2.

Рисунок 3. Распиновка интерфейса типа DB-9M

Таблица 2. Назначение выводов 9-ти контактного разъема

Контакт

Сигнал

Направление

Описание

1

CD

Вход

Обнаружена несущая

2

RXD

Вход

Принимаемые данные

3

TXD

Выход

Переданные данные

4

DTR

Выход

Хост готов

5

GND

Общий провод

6

DSR

Вход

Устройство готово

7

RTS

Выход

Хост готов к передаче

8

CTS

Вход

Устройство готово к передаче

9

RI

Вход

Обнаружен вызов

На сегодняшний день COM морально устарел, его место занимает интерфейс USB – (Universal Serial Bus). При этом плата подключенная по USB выступает в качестве виртуального COM порта. Плюс интерфейса в том, что он имеет встроенные линии питания, а следовательно позволяет подключать периферийные устройства без собственного источника питания. Распиновка контактов USB представлена на Рисунке 4.

Рисунок 4. Контакты USB интерфейса

Таблица 3. Назначение выводов USB интерфейса

Номер контакта

Обозначение

Цвет провода

Описание

1

+5 В

Красный

Питание

2

D-

Белый

Принимаемые данные

3

D+

Зеленый

Отправляемые данные

4

GND

Черный

Общий провод (земля)

Исходя из назначений выводов интерфейса USB можно сделать вывод, что контакт 2 выступает в качестве аналога сигнала RXD, осуществляется прием данных, а сигнал 3 выступает в качестве TXD, передача данных. Согласно спецификации Arduino, аналогами RXD и TXD выступают контакты, RX и TX соответственно. Важной особенностью является тот факт, что RX микроконтроллера подключается к TXD компьютера (D+), RX компьютера к TX микроконтроллера.

Работу с виртуальным драйвером COM рассмотрим в следующем разделе.

1.3 Средства Visual Studio для работы с com портом

Для управления роботом было написано приложение на языке С#. Основной функционал программы связан с пространством имен System.IO.Ports, который содержит классы для управления последовательными портами. Класс SerialPort предоставляет средства для синхронного и управляемого ввода-вывода, доступа к состоянию подключения-отключения устройства, а также доступа к свойствам драйвера последовательного порта. В качестве драйвера последовательного порта в системах типа Windows NT выступает SERIAL.SYS. Взаимодействие Visual Studio и драйвера показано на рисунке 5.

Рисунок 5. Взаимодействие Visual Studio и драйвера

Особенность драйвера в том, что он работает с последовательным портом как с файлами. Для открытия последовательного порта в Visual Studio реализован метод SerialPort.Open. Данный метод вызывает функцию CreateFile в драйвере SERIAL.SYS.

Прототип функции выглядит так:

HANDLE CreateFile(

LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDistribution,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile

);

1) lpFileName.Указатель на строку с именем открываемого или создаваемого файла. Особенность строки в том, что можно указывать сетевые имена для доступа к файлам на других компьютерах. Можно открывать логические разделы или физические диски и работать в обход файловой системы. Последовательные порты имеют имена "COM1", "COM2".

2) dwDesiredAccess. Задает тип доступа к файлу. Возможно использование следующих значений:

  • 0 Опрос атрибутов устройства без получения доступа к нему.

  • GENERIC_READ Файл будет считываться.

  • GENERIC_WRITE Файл будет записываться.

  • GENERIC_READ|GENERIC_WRITE Файл будет и считываться, и записываться.

3) dwShareMode. Задает параметры совместного доступа к файлу. Коммуникационные порты нельзя делать разделяемыми, поэтому данный параметр должен быть равен 0.

4) lpSecurityAttributes. Задает атрибуты защиты файла. Поддерживается только в Windows NT. Однако при работе с портами должен в любом случае равняться NULL.

4) dwCreationDistribution. Управляет режимами автосоздания, автоусечения файла и им подобными. Для коммуникационных портов всегда должно задаваться OPEN_EXISTING.

5) dwFlagsAndAttributes. Задает атрибуты создаваемого файла. Так же управляет различными режимами обработки. При работе с портом этот параметр должен быть или равным 0, или FILE_FLAG_OVERLAPPED. Нулевое значение используется при синхронной работе с портом, а FILE_FLAG_OVERLAPPED при асинхронной, или, другими словами, при фоновой обработке ввода/вывода.

6) hTemplateFile. Задает описатель файла-шаблона. При работе с портами всегда должен быть равен NULL.

Прием и передача данных выполняется функцией ReadFile и WriteFile. Метод SerialPort.Read вызывает данные функции в драйвере

BOOL ReadFile(

HANDLE hFile,

LPVOID lpBuffer,

DWORD nNumOfBytesToRead,

LPDWORD lpNumOfBytesRead,

LPOVERLAPPED lpOverlapped

);

А для метода SerialPort.Write функция WriteFile:

BOOL WriteFile(

HANDLE hFile,

LPVOID lpBuffer,

DWORD nNumOfBytesToWrite,

LPDWORD lpNumOfBytesWritten,

LPOVERLAPPED lpOverlapped

);

1) hFile. Описатель открытого файла коммуникационного порта.

2) lpBuffer. Адрес буфера. Для операции записи данные из этого буфера будут передаваться в порт. Для операции чтения в этот буфер будут помещаться принятые из линии данные.

3) nNumOfBytesToRead, nNumOfBytesToWrite. Число ожидаемых к приему или предназначенных к передаче байт.

4) nNumOfBytesRead, nNumOfBytesWritten. Число фактически принятых или переданных байт. Если принято или передано меньше данных, чем запрошено, то для дискового файла это свидетельствует об ошибке, а для коммуникационного порта совсем не обязательно.

5) lpOverlapped. Адрес структуры OVERLAPPED, используемой для асинхронных операций. Подробнее как с структурой, так и с асинхронными операциями мы познакомимся позже. Для синхронных операций данный параметр должен быть равным NULL.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]