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;