AdsSyncRead[Datatype]VarReq

AdsSyncReadBoolVarReq

AdsSyncReadIntegerVarReq

AdsSyncReadLongVarReq

AdsSyncReadSingleVarReq

AdsSyncReadDoubleVarReq

AdsSyncReadStringVarReq

Liest synchron Daten von einem ADS-Gerät an und schreibt diese in eine Visual Basic-Variable vom Typ Boolean, Integer, Long, Single, Double oder String.

object.AdsSyncRead[Datatype]VarReq(
  hVar As Long,
  cbLength As Long,
  pData As [Datatype]
) As Long

Parameter

hVar

[in] Handle der ADS-Variable (siehe Methode AdsCreateVarHandle())

cbLength

[in] Länge der Daten in Byte (siehe VB-Variablenlängen)

pData

[in] Visual Basic-Variable, in der die Daten der ADS-Variable geschrieben werden

Rückgabewert

Siehe ADS-Fehlercodes

Achtung: Im Falle eines Fehlers wird die VB-Variable (pData), deren Wert beschrieben werden sollte, auf "0" gesetzt.

Bemerkungen

Die Ausführung des Visual Basic-Programms wird so lange angehalten, bis die Daten vom ADS-Gerät vorliegen oder bis die Zeit in der Eigenschaft AdsAmsCommTimeout überschritten ist.
Anmerkung zum Datentyp String: Bei der Länge der Daten ist zu beachten, dass sich diese auf die Länge der Variable im Visual Basic Programm bezieht. Da Visual Basic ein Zeichen mit 2 Byte darstellt, muss die Länge der Variable mit LenB() ermittelt werden, nicht mit Len().

VB Beispiel

Dim hVar As Long
Dim VBVar As Single
'Handle der SPS-Variable holen
Call AdsOcx1.AdsCreateVarHandle("MAIN.PLCVar", hVar)
'Variable auslesen
Call AdsOcx1.AdsSyncReadSingleVarReq(hVar, 4&, VBVar)
'Variablen anzeigen
Label1.Caption = VBVar
'Handle wieder freigeben
Call AdsOcx1.AdsDeleteVarHandle(hVar)
Dim hVar As Long
Dim VBVar As String
'Handle der SPS-Variable holen
Call AdsOcx1.AdsCreateVarHandle("MAIN.PLCVar", hVar)
'Visual Basic initialisieren
VBVar = Space(10)
'Variable auslesen
Call AdsOcx1.AdsSyncReadStringVarReq(hVar, LenB(VBVar), VBVar)
'Variablen anzeigen
Label1.Caption = VBVar
'Handle wieder freigeben
Call AdsOcx1.AdsDeleteVarHandle(hVar)

Delphi Beispiel

procedure TForm1.Button1Click(Sender: TObject);
var     res1, res2, res3 :integer;
    //handles
    hBoolean, hSmallint, hLongint, hSingle, hDouble, hString : integer;
    //read buffer
    vWordBool : WordBool;
    vSmallint : Smallint;
    vLongint : Longint;
    vSingle : Single;
    vDouble : Double;
    vString : WideString;
begin
    res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vBOOL', hBoolean );
    res2 :=  AdsOcx1.AdsSyncReadBoolVarReq( hBoolean, sizeof(vWordBool), vWordBool );
    res3 := AdsOcx1.AdsDeleteVarHandle( hBoolean );
    Label1.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %s', [res1, res2, res3, BoolToStr(vWordBool, TRUE)]);

    res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vINT', hSmallint );
    res2 :=  AdsOcx1.AdsSyncReadIntegerVarReq( hSmallint, sizeof(vSmallint), vSmallint );
    res3 := AdsOcx1.AdsDeleteVarHandle( hSmallint );
    Label2.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %d', [res1, res2, res3, vSmallint]);

    res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vDINT', hLongint );
    res2 :=  AdsOcx1.AdsSyncReadLongVarReq( hLongint, sizeof(vLongint), vLongint );
    res3 := AdsOcx1.AdsDeleteVarHandle( hLongint );
    Label3.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %d', [res1, res2, res3, vLongint]);

    res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vREAL', hSingle );
    res2 :=  AdsOcx1.AdsSyncReadSingleVarReq( hSingle, sizeof(vSingle), vSingle );
    res3 := AdsOcx1.AdsDeleteVarHandle( hSingle );
    Label4.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %f', [res1, res2, res3, vSingle]);

    res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vLREAL', hDouble );
    res2 :=  AdsOcx1.AdsSyncReadDoubleVarReq( hDouble, sizeof(vDouble), vDouble );
    res3 := AdsOcx1.AdsDeleteVarHandle( hDouble );
    Label5.Caption := Format('res1: %d, res2: %d, res3: %d,  Value: %f', [res1, res2, res3, vDouble]);

    res1 := AdsOcx1.AdsCreateVarHandle( 'MAIN.vSTRING', hString );
    SetLength(vString,80{standard length of the PLC string variable});
    res2 :=  AdsOcx1.AdsSyncReadStringVarReq( hString, Length(vString)*2{byte length!}, vString );
    res3 := AdsOcx1.AdsDeleteVarHandle( hString );
    Label6.Caption := Format('res1: %d, res2: %d, res3: %d,  Length: %d, Value: %s', [res1, res2, res3, Length(vString), vString]);
end;