comportcreate

Функция создания подключения к последовательному порту

Синтаксис:

comportcreate(port_name, <callback_func>, <speed>, <byte_size>, <stop_bits>, <parity>);

Аргументы:

port_name – имя порта, тип string;

callback_func – имя callback функции для обработки пришедших данных;

speed – скорость порта (по умолчанию считывается из настроек порта);

byte_size – размер информационного байта (по умолчанию считывается из настроек порта);

stop_bits – стоп-биты;

parity – четность.

Описание:

comportcreate – функция создает подключение к последовательному COM-порту с именем port_name. Остальные аргументы являются необязательными. В случае использования callback функции, формат ее должен соответствовать формату:
function DoCallBack(adata: string):boolean;

Результат:

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

Сопутствующие материалы