Показать сообщение отдельно
  #4  
Старый 20.03.2011, 14:46
serega8623 serega8623 вне форума
Прохожий
 
Регистрация: 19.03.2011
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Стоит контроллер 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 каналов.
Ответить с цитированием