comportcreate
Функция создания подключения к последовательному порту
Синтаксис
com = comportcreate(port_name, callback_func, speed, byte_size, stop_bits, parity);
Аргументы
| Имя | Тип данных | Описание |
|---|---|---|
| port_name | string |
Имя порта |
| callback_func | string |
Имя callback функции для обработки пришедших данных |
| speed | integer |
Скорость порта (по умолчанию считывается из настроек порта) |
| byte_size | integer |
Размер информационного байта (по умолчанию считывается из настроек порта) |
| stop_bits | integer |
Стоп-биты |
| parity | boolean |
Четность |
Описание
comportcreate – функция создает подключение к последовательному COM-порту с
именем port_name. Остальные аргументы являются необязательными. В случае
использования callback функции, формат ее должен соответствовать
формату:function DoCallBack(adata: string):boolean;Результат
| Имя | Тип данных | Описание |
|---|---|---|
| com | integer |
Функция возвращает идентификатор COM-порта если подключение произошло успешно или ноль в противном случае. |
Пример
//Эта функция является обработчиком асинхронного сообщения
//от порта когда в него приходят любые данные
//Тут мы разбираем пришедшие от устройства данные
function DoCallBack(adata: string):boolean;
var startp: integer, endp: integer, rawdata: string, ascsymno: integer;
startp = 0;
endp = 0;
rawdata = "";
//Обрабатываем пришедшие данные (без сшивки пакетов, считаем что в буфер всё влезло)
for(i=1,length(adata)) begin
ascsymno = asc(adata[i]);
if ascsymno = 0xff then begin
startp = i;
end;
if ascsymno = 0xfe then begin
endp = i;
end;
//Для индикации
rawdata = rawdata + " " + inttohex(ascsymno,2);
end;
seterrorstr("Сырые данные: "+rawdata,0);
//Вывод осмысленного сообщения в консоль ну или другая пользовательская обработка:
if (startp > 0) and (endp > 0) then begin
seterrorstr("Получено сообщение: "+strcopy(adata,startp + 1,endp - startp - 1),0);
end;
end;
initialization
var buffer: string;
hcom = comportcreate("COM1",DoCallBack(buffer));
end;
//на каждом шаге пишем в порт произвольные сообщения
// 0xff - стартовый символ
// 0xfe - стоповый символ
comportwrite(hcom,chr(0xff)+ "time = "+floattostr(time)+chr(0xfe));
finalization
//После завершения работы - уничтожаем поток и структуры данных порта
freeobject(hcom);
end;
В результате выполнения скрипта происходит установление связи по COM-порту, а также запись и считывание данных в виде строки.
Дополнительные материалы
Нет.