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

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).