Библиотека SysLibCom содержит:
- ;
Блоки библиотеки SysLibCom используются совместно, поэтому отдельные примеры работы каждого блока не приводятся. В разделе Пример представлен общий пример программы, демонстрирующий применение всех блоков.
SysComOpen
Функция SysComOpen типа данных DWORD открывает последовательный порт.
SysComOpen возвращает дескриптор порта, который используется при вызове других функций библиотеки. В случае ошибки, возвращается 16#FFFFFFFF.
PORTS
Перечисление PORTS:
TYPE PORTS : BYTE (COM1:=1, COM2, COM3, COM4, COM5, COM6, COM7, COM8);
END_TYPE
SysComSetSettings
Функция SysComSetSettings типа BOOL устанавливает скорость, число стоповых бит, контроль паритета, таймаут, размер буфера и период опроса для последовательного порта. Требуемые параметры передаются посредством указателя на структуру COMSETTINGS.
Имя переменной | Тип данных | Описание |
|---|---|---|
Входные переменные | ||
dwHandle | DWORD | Дескриптор порта, возвращаемый SysComOpen |
ComSettings | REF_TO COMSETTINGS | Указатель на структуру COMSETTINGS |
Возвращает TRUE при успешной установке параметров, иначе FALSE.
COMSETTINGS
Элементы структуры COMSETTINGS определены следующим образом:
Имя переменной | Тип данных | Описание |
|---|---|---|
Port | PORTS | Номер порта (см. PORTS) |
dwBaudRate | DWORD | Скорость: 4800, 9600, 19200, 38400, 57600, 115200 (на данный момент реализована работа с данными скоростями, в дальнейшем список поддерживаемых скоростей будет расширен) |
byStopBits | BYTE | 0 = один стоп бит; 1 = полтора; 2 = два |
byParity | BYTE | 0 = нет бита контроля; 1 = нечетность; 2 = четность |
dwTimeout | DWORD | Таймаут интерфейса в мс, по умолчанию 0 |
dwBufferSize | DWORD | Размер встроенного буфера, по умолчанию 0 |
dwScan | DWORD | Время полинга последовательного интерфейса, должно быть 0 |
SysComSetSettingsEx
Данная функция типа BOOL применяется для установки расширенных параметров порта. В дополнение к параметрам, определяемым SysComOpen, она задает управление потоком и размер символов. Требуемые параметры передаются посредством указателя на структуру COMSETTINGSEX. Возвращает TRUE при успешной установке параметров, иначе FALSE. В зависимости от аппаратной реализации, не всегда возможно многократно менять параметры открытого порта. В этом случае, закройте его и откройте заново.
Имя переменной | Тип данных | Описание |
|---|---|---|
Входные переменные | ||
dwHandle | DWORD | Дескриптор порта, возвращаемый SysComOpen |
ComSettingsEx | REF_TO COMSETTINGSEX | Указатель на структуру COMSETTINGSEX |
COMSETTINGSEX
Элементы структуры COMSETTINGSEX определены следующим образом:
Имя переменной | Тип данных | Описание |
|---|---|---|
Size | INT | Размер структуры в байтах. Используйте sizeof() для заполнения этого поля |
Port | PORTS | Номер порта (см. PORTS) |
dwBaudRate | DWORD | Скорость: 4800, 9600, 19200, 38400, 57600, 115200 |
byStopBits | BYTE | 0 = один стоп бит; 1 = полтора; 2 = два |
byParity | BYTE | 0 = нет бита контроля; 1 = нечетность; 2 = четность |
dwTimeout | DWORD | Таймаут интерфейса в мс, по умолчанию 0 |
dwBufferSize | DWORD | Размер встроенного буфера, по умолчанию 0 |
dwScan | DWORD | Время полинга последовательного интерфейса; должно быть 0, если в документации изготовителя аппаратуры нет иных указаний |
cByteSize | BYTE | 4...8: размер символа в битах |
fOutxCtsFlow | BOOL | TRUE означает контроль потока передачи по сигналу CTS |
fDtrControl | BYTE | DTR всегда 0 для открытого порта. 1: DTR 2: Управление по DTR |
fDsrSensitivity | BOOL | При TRUE запрещен прием при отсутствии сигнала DSR |
fRtsControl | BYTE | 0: RTS всегда 0 для открытого порта; 1: RTS всегда 1 для открытого порта; 2: Драйвер держит RTS пока буфер приемника заполнен менее чем на половину. Драйвер снимает RTS, если буфер заполнен более чем на три четверти; 3: Управление по RTS: драйвер устанавливает RTS на время передачи. После передачи всех данных из буфера RTS снимается |
fOutxDsrFlow | BOOL | Разрешает управление по DSR. При переходе DSR в ноль передача приостанавливается |
SysComClose
Функция SysComClose типа BOOL закрывает COM порт. Возвращает TRUE при успешном завершении, иначе FALSE.
Имя переменной | Тип данных | Описание |
|---|---|---|
Входные переменные | ||
dwHandle | DWORD | Дескриптор порта, возвращаемый SysComOpen |
SysComWrite
SysComWrite — это функция типа DINT, записывающая данные в порта на передачу. Возвращает число реально записанных байт.
Имя переменной | Тип данных | Описание |
|---|---|---|
Входные переменные | ||
dwHandle | DWORD | Дескриптор порта, возвращаемый SysComOpen |
BufferAddress | DWORD | Указатель на буфер, содержащий данные для передачи. (Используйте оператор REF — полную информацию по указателю см. в Руководстве пользователя ALTA IDE) |
BytesToWrite | DWORD | Число байт в буфере |
dwTimeout | DWORD | Время в мс, после которого функция обязана завершиться |
SysComRead
Функция типа DINT читает принятые данные из порта. Возвращает число считанных байтов.
Имя переменной | Тип данных | Описание |
Входные переменные | ||
dwHandle | DWORD | Дескриптор порта, возвращаемый SysComOpen |
BufferAddress | DWORD | Указатель на буфер, куда копируются принятые данные. (Используйте оператор REF) |
BytesToRead | DWORD | Число считаемых байт |
dwTimeout | DWORD | Время в мс, после которого функция обязана завершиться |
SysComGetVersion2300
Функция типа DWORD всегда возвращает 100. Используется для внутренней автоматической проверки версии. В прикладных программах ее вызывать не нужно.