DataPort

DataPort - thread-safe abstract port for data exchange

SVN

Описание TDataPort

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

TDataPort является абстрактным портом для чтения и записи данных. Сам по себе он ничего не делает, а только описывает базовые методы для записи и чтения данных, а также базовые события.

Свойства:

    • Active - Активность, готовность порта к обмену данными.

Методы:

    • Push() - Отправка данных в порт.
    • Pull() - Взятие данных из входящего буфера порта, взятые данные из буфера удаляются. Можно указать число байт для чтения. Если в буфере меньше байт, чем указано, будет возвращено все содержимое буфера. По умолчанию возвращает все содержимое буфера, и очищает его.
    • Peek() - Чтение данных из входящего буфера порта, данные при этом остаются в буфере. Если в буфере меньше байт, чем указано, будет возвращено все содержимое буфера. По умолчанию возвращает все содержимое буфера.
    • PeekSize() - Возвращает число байтов данных, ожидающих во входящем буфере порта.

События:

    • OnDataAppear - Срабатывает при появлении данных во входящем буфере порта.
    • OnError - Срабатывает при ошибке порта, содержит описание ошибки.

Компонент TDataPortSerial

Представляет собой последовательный порт. В Windows это COM-порт (реальный или виртуальный). В Linux это /dev/ttyS или /dev/ttyUSB. Также, в Linux проверяется файл блокировки /var/lock/LCK..ttyS

Свойства:

    • Port - название порта (COM1, /dev/ttyS01)
    • BaudRate - скорость обмена
    • MinDataBytes - минимальное число байт в буфере для срабатывания события OnDataAppear

Методы:

    • Open() - открывает порт. В качестве параметра передается строка инициализации порта следующего вида:

InitStr = 'Port,BaudRate,DataBits,Parity,StopBits,SoftFlow,HardFlow' Port - COM port name (COM1, /dev/ttyS01) BaudRate - connection speed (50..4000000 bits per second), default 9600 DataBits - default 8 Parity - (N - None, O - Odd, E - Even, M - Mark or S - Space) default N StopBits - (1, 1.5, 2) SoftFlow - Enable XON/XOFF handshake, default 1 HardFlow - Enable CTS/RTS handshake, default 0

События:

    • OnConnect - Срабатывает после инициализации порта.

Компоненты TDataPortIP, TDataPortTCP, TDataPortUDP

Представляют собой асинхронную «обертку» над Synapse TBlockSocket.

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

Свойства:

    • RemoteHost - IP-адрес или имя удаленного хоста
    • RemotePort - номер удаленного TCP или UDP порта

Методы:

    • Open() - Подключается к удаленному порту. Для TCP устанавливается сеанс связи, для UDP просто инициализируется порт. Формат строки инициализации:

InitStr = 'RemoteHost:RemotePort' RemoteHost - IP-адрес или имя удаленного хоста RemotePort - номер удаленного TCP или UDP порта

События:

    • OnConnect - Срабатывает после инициализации порта UDP или установки сеанса TCP.

Компонент TDataPortCom

Устаревший! По функционалу аналогичен TDataPortSerial. Использует ComPort Library ver. 4.11, которая не совместима с Lazarus.

Компонент TDataPortUdpFtdi

Служит для подключения к драйверу-адаптеру FTDI-UDP. По сути последовательный порт, работающий поверх UDP.

Компонент TDataPortHTTP

Позволяет обмениваться данными по протоколу HTTP. После установки URL и параметров запроса нужно вызвать Push() для подключения и передачи данных на удаленный сервер. После успешного выполнения запроса можно прочитать полученные данные из входящего буфера. Большие объемы данных принимаются частями, при этом событие OnDataAppear может срабатывать несколько раз.

Если выбран метод POST, то устанавливается параметр mime-type='application/x-www-form-urlencoded', это позволяет отдавать значения параметров как данные веб-форм.

Свойства:

    • Url: строка адреса и параметров, URL
    • Params: параметры HTTP-запроса в формате имя=значение
    • Method: метод HTTP-запроса
    • * httpGet - GET
    • * httpPost - POST

Методы:

    • Open() - Устанавливает строку URL HTTP-запроса, не выполняя сам запрос. Запрос выполняется при вызове метода Push(). Формат строки URL:

URL = 'http://RemoteHost:RemotePort/Path' RemoteHost - IP-адрес или имя удаленного хоста RemotePort - номер удаленного TCP или UDP порта Path - путь к запрашиваемому ресурсу

Компонент TDataPortFile

Обмен данными через файл. Подходит для использования /dev/* в Unix или специальных файлов в Windows. Можно использовать и обычные файлы.

Свойства:

    • Filename: имя файла
    • FIlePos: текущее положение в файле, в байтах от начала файла (для обычных файлов)
    • QueryInterval: интервал опроса изменений в файле, мс
    • MinDataBytes: минимальное число байтов в буфере, для срабатывания события OnDataAppear
    • KeepOpen: нужно ли держать файл открытым между операциями чтения и записи
    • * True - файл остается открытым
    • * False - файл открывается перед каждой операцией чтения-записи и закрывается после завершения операции
    • WriteMode: режим записи в файл
    • * fwmRewrite - запись каждый раз ведется в начало файла
    • * fwmAppend - данные записываются с позиции последней операции или добавляются в конец файла

Методы:

    • Open() - Открывает файл с указанным именем. Можно использовать префикс «file:»