Последовательный порт#
TbtkScriptSerialPortTimeouts#
- class TbtkScriptSerialPortTimeouts#
Класс предоставляет доступ к структуре COMMTIMEOUTS.
See also
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, определяющей настройки последовательного порта.
See also
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
- 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
- SetDCBProperties(DCB: TbtkScriptSerialPortDcbObject)#
Записывает управляющую структуру DCB в порт.
- Parameters
DCB (
TbtkScriptSerialPortDcbObject
) – Структура DCB.
Warning
Не влияет на работу устройства в текущей версии
- GetDCBProperties() TbtkScriptSerialPortDcbObject #
Получает настройки порта в виде структуры DCB.
- Return type
- 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).