Последовательный порт

TbtkScriptSerialPortTimeouts

class TbtkScriptSerialPortTimeouts

Класс предоставляет доступ к структуре COMMTIMEOUTS.

Warning

Все атрибуты класса являются заглушками и не влияют на работу

New in version 1.25.0-ms4.

WriteTotalTimeoutMultiplier Integer

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

Return type:

Integer

WriteTotalTimeoutConstant Integer

Константа для вычисления полного времени ожидания для операций записи, в миллисекундах.

Return type:

Integer

ReadTotalTimeoutMultiplier Integer

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

Return type:

Integer

ReadTotalTimeoutConstant Integer

Константа для вычисления полного времени ожидания для операций чтения, в миллисекундах.

Return type:

Integer

ReadIntervalTimeout Integer

Максимальное допустимое время между получением двух символов, в миллисекундах.

Return type:

Integer

TbtkScriptSerialPortDcbObject

class TbtkScriptSerialPortDcbObject

Класс предоставляет доступ к структуре DCB, определяющей настройки последовательного порта.

Warning

Все атрибуты класса являются заглушками и не влияют на работу

New in version 1.25.0-ms4.

StopBits Integer

Доступные константы: ONESTOPBIT, ONE5STOPBITS, TWOSTOPBITS.

Return type:

Integer

Parity Integer

Доступные константы: NOPARITY, ODDPARITY, EVENPARITY, MARKPARITY, SPACEPARITY.

Return type:

Integer

ByteSize Integer

Число битов в передаваемых и получаемых байтах.

Return type:

Integer

BaudRate Integer

Доступные константы: CBR_110, CBR_300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_56000, CBR_57600, CBR_115200, CBR_128000, CBR_256000.

Return type:

Integer

TbtkScriptSerialPortObject

class TbtkScriptSerialPortObject

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

New in version 1.25.0-ms4.

Registered Boolean

Зарегистрирован ли обработчик на последовательный порт: True - зарегистрирован, False - не зарегистрирован.

Return type:

Boolean

Opened Boolean

Возвращает состояние порта: True - открыт, False - закрыт.

Return type:

Boolean

Note

Данное свойство обозначает был ли открыт порт методом Open(). То есть если порт используется другим приложением, свойство вернет False.

See also

Busy

Data String

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

Return type:

String

Port String

Имя последовательного порта.

Return type:

String

Busy Boolean

Доступен ли последовательный порт для открытия

Return type:

Boolean

Note

  • Свойство отстутсвует в Global1

  • При обращении к свойству происходит открытие и закрытие последовательного порта. Метод полезен, если нужно проверить занят ли порт на уровне ОС, а не только на уровне текущего сервера.

SetCOMMTimeouts(Timeouts TbtkScriptSerialPortTimeouts)

Записывает параметры таймаутов в порт.

Parameters:

Timeouts (TbtkScriptSerialPortTimeouts) – Структура с таймаутами

Warning

Не влияет на работу устройства в текущей версии

GetCOMMTimeouts() TbtkScriptSerialPortTimeouts

Получает параметры времени ожидания (timeout) последовательного порта.

Return type:

TbtkScriptSerialPortTimeouts

SetDCBProperties(DCB: TbtkScriptSerialPortDcbObject)

Записывает управляющую структуру DCB в порт.

Parameters:

DCB (TbtkScriptSerialPortDcbObject) – Структура DCB.

Warning

Не влияет на работу устройства в текущей версии

GetDCBProperties() TbtkScriptSerialPortDcbObject

Получает настройки порта в виде структуры DCB.

Return type:

TbtkScriptSerialPortDcbObject

Close()

Закрывает COM порт.

Warning

Важно после работы с последовательным устройством закрыть его.

Open()

Открывает COM порт.

DeregisterHandler()

Отменяет регистрацию обработчика данных для COM порта.

RegisterHandler(Operation: TbtkScriptOperationObject)

Регистрирует обработчик для COM порта.

Parameters:

Operation (TbtkScriptOperationObject) – Операция-обработчик.

Пример работы

Листинг тестовой операции:

<PASCAL>
  ComPortName := GetVar('sSerialPortName');
  SerialPort := Application.GetSerialPort(ComPortName); // ComPortName = "COM3"
  SerialPort.Open;

  // Дальше идет задание настроек, но этот момент можно пропустить
  // тогда будут использованы значения по умолчанию
  // точно такие же, какие заданы в этом примере
  dcb := SerialPort.GetDCBProperties;
  dcb.BaudRate := CBR_19200;
  dcb.ByteSize := 8;
  dcb.Parity := ONESTOPBIT;
  dcb.StopBits := NOPARITY;
  SerialPort.SetDCBProperties(dcb);

  timeouts := SerialPort.GetCOMMTimeouts;
  timeouts.ReadIntervalTimeout := 50;
  timeouts.ReadTotalTimeoutConstant := 40;
  timeouts.ReadTotalTimeoutMultiplier := 40;
  timeouts.WriteTotalTimeoutConstant := 40;
  timeouts.WriteTotalTimeoutMultiplier := 40;
  SerialPort.SetCOMMTimeouts(timeouts);

  SerialPort.RegisterHandler(Selection.OperationByName('OnComPortReaded') );
</PASCAL>

Листинг операции-обработчика OnComPortReaded:

<PASCAL APortName>
  SerialPort := Application.GetSerialPort(APortName);
  ShowMessage(SerialPort.Data);
</PASCAL>

Эмулирование COM порта

Для теста можно эмулировать COM порт и записывать в него поток данных. Существуют бесплатные(условно-бесплатные) версии подобных утилит.

Проверенно работает утилита VSPE (VIRTUAL SERIAL PORTS EMULATOR) для эмуляции виртуального последовательно порта.

Для генерации трафика в цикле можно использовать утилиту AGG Com port data emulator (Freeware).