Thread Win32::API::Struct Daten werden nicht übernommen
(9 answers)
Opened by hummer at 2015-06-11 12:53
Hallo Forum,
nach langer Perl-Pause muss ich mich wieder einem kleinem Projekt widmen und hoffe ihr könnt mir helfen. anbei mein Problem. Ich werde eine Verbindung mit einer SPS herstellen. Hierzu habe ich eine DLL, welche entsprechende Funktionen mir zur verfügung stellt. Anbei liegen mir auch entsprechende C-Code zur verwendung bei. Ich würde aber gen bei Perl bleiben und diesen C-Code entsprechend in Perl umsetzen. Mit Win32::API konnte ich eine Verbindung zur DLL herstellen. Code: (dl
)
1 use strict; So nun ist der Code aber Codiert, und gibt mir in diesem Datentyp "LONG" die Revision, Vision und Bild Nummer raus. im C-Beispiel liegen hier noch entsprechende Headefiles bei. Code: (dl
)
1 typedef struct Wie kann ich nun die Dtructur in Perl umsetzen und dann den Wert übergeben, sodass ich entsprechend die einzelnen entcodierten Werte bekomme? in C sieht das folgendermaßen aus: Code: (dl
)
1 void main() in Perl habe ich folgendes Probiert: anlegen einer Structur: Code: (dl
)
1 use strict; Soweit so gut, mit Code: (dl
)
say $pt->sizeof(); weiter habe ich folgendes probiert: Code: (dl
)
1 use strict; Ergebnis: Wrong number of parameters: expected 0, got 1. Verwende ich nur dies: Code: (dl
)
$pt = AdsGetDllVersion() or die "AdsGetDllVersion failed: $^E"; bekomme ich folgende Fehlermeldung: Can't locate object method "version" via package "196638" (perhaps you forgot to load "196638"?) at P:\Perl\01_Dll_01.pl line 26. Was mache ich falsch, wie kann ich das oben genannte ergbnis aus Code1 in die Struktur packen, damit ich die Werte bekomme, ist es Sinnvoll die Headerdatei des C-Code in Perl einzubinden? Vielen Dank für eure Hilfe. Gruß |