AdsSyncRead[Datatype]Req
AdsSyncReadBoolReq
AdsSyncReadIntegerReq
AdsSyncReadLongReq
AdsSyncReadSingleReq
AdsSyncReadDoubleReq
AdsSyncReadStringReq
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]Req(
nIndexGroup As Long,
nIndexOffset As Long,
cbLength As Long,
pData As [Datatype]
) As Long
Parameter
nIndexGroup
[in] Index-Gruppe der ADS-Variable
nIndexOffset
[in] Index-Offset der ADS-Variable
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 VBVar As Long
'Wert auslesen
Call AdsOcx1.AdsSyncReadLongReq(&H4020&, 0&, 8&, VBVar)
'Variablen anzeigen
Label1.Caption = VBVar
Dim VBVar As String
'Visual Basic Variable initialisieren
VBVar = Space(10)
"Wert aus Variable auslesen
Call AdsOcx1.AdsSyncReadStringReq(&H4020&, 0&, LenB(VBVar), VBVar)
'Variablen in Form anzeigen
Label1.Caption = VBVar
Delphi Beispiel
procedure TForm1.Button2Click(Sender: TObject);
var res :integer;
//read buffer
vWordBool : WordBool;
vSmallint : Smallint;
vLongint : Longint;
vSingle : Single;
vDouble : Double;
vString : WideString;
begin
res := AdsOcx1.AdsSyncReadBoolReq( $4020, 0, sizeof(vWordBool), vWordBool );
Label1.Caption := Format('res: %d, Value: %s', [res, BoolToStr(vWordBool, TRUE)]);
res := AdsOcx1.AdsSyncReadIntegerReq( $4020, 2, sizeof(vSmallint), vSmallint );
Label2.Caption := Format('res: %d, Value: %d', [res, vSmallint]);
res := AdsOcx1.AdsSyncReadLongReq( $4020, 4, sizeof(vLongint), vLongint );
Label3.Caption := Format('res: %d, Value: %d', [res, vLongint]);
res := AdsOcx1.AdsSyncReadSingleReq( $4020, 16, sizeof(vSingle), vSingle );
Label4.Caption := Format('res: %d, Value: %f', [res, vSingle]);
res := AdsOcx1.AdsSyncReadDoubleReq( $4020, 32, sizeof(vDouble), vDouble );
Label5.Caption := Format('res: %d, Value: %f', [res, vDouble]);
SetLength(vString,80{standard length of the PLC string variable});
res := AdsOcx1.AdsSyncReadStringReq( $4020, 64, Length(vString)*2{byte length!}, vString );
Label6.Caption := Format('res: %d, Length: %d, Value: %s', [res, Length(vString), vString]);
end;