Функция создания подключения к последовательному порту
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 | Четность |
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-порту, а также запись и считываение данных в виде строки.
Нет.