-
СИ30 и delphi
Добрый день !
Ставится задача опрашивать СИ-30 библиотекой owen_io.dll.
Какую функцию библиотеки использовать для опроса значения счётчика на СИ-30 ?
Посмотрел примеры, набросал программу но что то функция ReadSI8BCD ни чего не возвращает, может кто делал что то подобное, подскажите.
function OpenPort(n, speed, part, bits, stop, vid: Integer): Integer; stdcall; external 'owen_io.dll';
function ClosePort: Integer; stdcall; external 'owen_io.dll';
function ReadSI8BCD(adr, adr_type: Integer; command: PChar; var value: Integer): Integer; stdcall; external 'owen_io.dll';
....
var
VD: Integer;
begin
vd:=0;
OpenPort(7, spd_9600, prty_NONE, databits_8, stopbit_1, RS485CONV_AUTO);
ReadSI8BCD(0,0,' DCNT ',vd);
label1.Caption:=inttostr(vd);
end;
Спасибо заранее.
-
Я с Dilphi на "Вы", но попробую помочь. Вы производите опрос СИ30 функцией предназначенной для опроса СИ8. Параметр DCNT в СИ30 отсутствует, поэтому и нет возвращаемого значения. Для СИ30 имя параметра текущее значение счета - Ctr. Размер данных - 4 байта, тип - long (по другому - sint). Подходящая функция для этого параметра - ReadSInt, попробуйте использовать ее.
-
Спасибо, сейчас попробую эту функцию, по результатам отпишусь.
-
Огромное спасибо за подсказку.
Вот с таким кодом все работает и выдает именно текущее значение с о знаком + или -
var
res: integer;
begin
res := OpenPort(6, spd_9600, prty_NONE, databits_8, stopbit_1, RS485CONV_AUTO);
if(res < 0) then
begin
showMessage('Port disabled');
exit;
end
else
readsint(16,0,'CEU', res, -1);
ClosePort();
label1.Caption:=inttostr(res);
end;