da ich im Moment mit einem ActiveX Aufruf kämpfe, wende ich mich mit der Bitte um Hilfe an Euch.
Für eine Kommunikation zu einer SPS von Beckhoff verwende ich ein ActiveX.
Im Prinzip funktioniert die Kommunikation.
Code: Alles auswählen
oXbp_Ax:AdsAmsServerNetId := ADS_ID_PRUEFEN
oXbp_Ax:AdsAmsServerPort := 801
dummy := oXbp_Ax:AdsCreateVarHandle("var_test", @hVar) // Handle öffnen
dummy := oXbp_Ax:AdsSyncReadIntegerVarReq(@hVar ,2, @variable) // Variable Integer lesen
oXbp_Ax:AdsDeleteVarHandle(@hVar) // Handle schließen
Die Fa. Beckhoff hat auch ein VBasic Beispielprogramm mitgeliefert.
Code: Alles auswählen
Dim hVar As Long
Dim Data(100) As Integer
'--- wird beim Starten aufgerufen ---
Private Sub Form_Load()
'--- Exception freigeben --- AdsOcx1.EnableErrorHandling = True
Call AdsOcx1.AdsCreateVarHandle("Main.PLCVar", hVar)
End Sub
'--- wird beim Beenden aufgerufen ---
Private Sub Form_Unload(Cancel As Integer)
Call AdsOcx1.AdsDeleteVarHandle(hVar)
End Sub
'--- wird vom Bediener aufgerufen ---
Private Sub cmd_read_Click()
Dim intIndex As Integer
'--- Array komplett auslesen ---
Call AdsOcx1.AdsSyncReadIntegerVarReq(hVar, 200, Data(0))
'--- Array Elemente in Form anzeigen ---
lstArray.Clear
For intIndex = 0 To 99
lstArray.AddItem (CStr(intIndex) & Chr(vbKeyTab) & _ CStr(Data(intIndex)))
Next
End Sub
Wir haben versuch dies in Xbase++ nachzubilden, jedoch beim lesen mit AdsSyncReadIntegerVarReq( tritt ein Laufzeitfehler auf.
Wie kann ich eine Xbase Array so nachbilden, das es einem C oder Vbasic entspricht ?
Wie kann ich dieses Problem lösen ?
mfg.
mkersch