Стоит контроллер I-8811 в нем модуль I-8017-16 аналоговых каналов. Скорость порта 115200.
Вот код опроса:
Код:
if bComOpen then // Reopen Com port
begin
Close_Com(gcPort);
bComOpen := False;
end;
if Not bComOpen then
OpenCom;
if Not bComOpen then exit;
gw7000[0] := Word(gcPort); // COM Port
gw7000[1] := StrToInt('$' + Address.Text); // Module Address
// gw7000[2] := 65536; // Module ID
gw7000[2] := StrToInt('$' + TypeComboBox.Text ); // Module ID
If RadioButton1.Checked Then
gw7000[3] := 1 // CheckSum Enable
Else
gw7000[3] := 0;
gw7000[4] := 10; // TimeOut = 0.01 second
gw7000[5] := 0;
gw7000[6] := 1; // string debug
gw7000[7] := StrToInt(Edit3.Text ); // Module ID
wRet := AnalogIn_8K(@gw7000[0], @gf7000[0], gszSend, gszReceive);
If wRet <> 0 Then
Begin
Beep;
Application.MessageBox( PChar('The Error Code:' + IntToStr(wRet) + #13 + IGetErrorString(wRet))
, 'AnalogIn() error !!! ' , mb_IconExclamation );
Close_Com (gcPort);
end;
If gw7000[6] = 1 Then
Begin
Edit1.Text := gszSend;
Edit2.Text := gszReceive;
End;
Beep;
Админ: Пользуемся тегами для офрмления кода!
Функция возвращает значения в gszReceive в формате >+00.000+00.000+00.000...+00.000 так 16 каналов.