Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7187[/thread]

Inhalt einer Speicheradresse auslesen? (Seite 2)



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
esskar
 2005-08-08 14:30
#56996 #56996
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
lass es mal so laufen

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sub FT_OpenPM{
my ( $self, $devNum ) = @_;
my $status = $self->{'FT_STATUS'};
my $handle = $self->{'FT_HANDLE'};
#import function
my $fct_open = new Win32::API( 'FTD2XX', 'FT_Open', 'IP', 'I' );
unless( $fct_open ){
print("FT_Open not found!\n");
return 0;
}
#call imported function
$status = $fct_open->Call( $devNum, $handle );
print "[$handle]\n";
$handle =~ s/\0.*$//;
print "[$handle]\n";
#$handle = Storable::retrieve( $handle );
#return the functions return status and the handle
return ($status, $handle);


und poste diese zwei zeilen.
hätt gern mal gewusst, was drin steht!
Hellmaker
 2005-08-08 14:49
#56997 #56997
User since
2005-08-05
16 Artikel
BenutzerIn
[default_avatar]
die beiden Zeilen lauten:
Quote
[á;9 zhalter um speicherplatz zu reservieren]
[á;9]


habe $handle mit folgendem Text vorbelegt:
Quote
platzhalter um speicherplatz zu reservieren

, wie es in der API doku gefordert wird.
esskar
 2005-08-08 14:52
#56998 #56998
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
so, was hat das jetzt mit einer Perl Referenz zu tun?
Hellmaker
 2005-08-08 14:59
#56999 #56999
User since
2005-08-05
16 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,08.08.2005, 12:52]so, was hat das jetzt mit einer Perl Referenz zu tun?[/quote]
Ja nix, das is ja gerade das Problem: Hab eben nur diese Adresse und kann mir den Inhalt nicht anzeigen lassen, deswegen frag ich ja, ob sich diese Adresse referenzieren lässt und dann entsprechend dereferenzieren und somit der Inhalt angeben lässt.
esskar
 2005-08-08 15:09
#57000 #57000
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
aso!
wohl nicht;
der pointer ist keine Perl-Referenz; er liegt im speicherbereich der FTD2XX.dll. Man kommt von Perl nur an den Speicher von perl.exe ran; zumindest sauber!
Strat
 2005-08-08 15:17
#57001 #57001
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich vermute, du hast irgendwo ein arges problem in deinem code, dass du mit speicheradressen rumfuhrwerken musst. kann man das nicht an der quelle loesen, anstelle an den symptomen (den speicheradressen) auf gefaehrliche weise rumzudoktern?
Wo verlierst du die daten, die zur speicheradresse gehoeren? wieso speicherst du jedoch die speicheradresse ab? kannst du stattdessen nicht (z.B. eine referenz auf) die daten anstelle der speicheradresse abspeichern und uebergeben? oder sonst die daten in serialisierter form?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Hellmaker
 2005-08-08 15:28
#57002 #57002
User since
2005-08-05
16 Artikel
BenutzerIn
[default_avatar]
ich will ja auch gar nicht mit den Adressen rumfuhrwerken. Ich übergebe an die importierte Funktion aus der DLL die Parameter, die laut *.H verlangt werden. Zum einen die Devicenumber (=0) und zum anderen einen Pointer auf die Variable, in der das handle abgelegt werden soll. Laut API doku soll man aber keine Referenz sondern nur die Variable übergeben. Referenz funktioniert auch leider nicht. Und die Funktion der DLL speichert auch was in $handle ab, jedoch leider nur die Adresse, in der das handle zu finden ist. Selbes Problem tritt auch bei einer anderen Funktion auf, die mir die Seriennummer liefern soll. Bekomme jedoch auch nur eine Adresse.
esskar
 2005-08-08 23:19
#57003 #57003
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
was soll denn in den in $handle drinstehen?
ein handle, ist ein handle! dieses musst du doch bestimmt wieder irgendwo übergeben, um werte auslesen zu können, die unter diesem handle gespeichert sind!
weismat
 2005-08-09 07:42
#57004 #57004
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Hellmaker, ich denke, daß Du Dir SWIG anschauen musst. SWIG ermöglich es Dir, einen Wrapper für Deine DLL zu erzeugen. Praktische Erfahrungen habe ich nicht, weil ich das zusammen mit COM brauchte und das kann Perl meines Wissens leider nicht.
Hellmaker
 2005-08-09 11:32
#57005 #57005
User since
2005-08-05
16 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,08.08.2005, 21:19]was soll denn in den in $handle drinstehen?[/quote]
...das ist ne gute Frage, die ich FTDI auch gestellt hab, jedoch halten die damit bis jetzt hintern Berg. Noch... Angeblich bekomm ich diese Woche noch Infos darüber...

Quote
zusammen mit COM brauchte und das kann Perl meines Wissens leider nicht

...mist, dass wär noch ein weiterer Weg gewesen. Aber dann kann ich mir den Ärger wohl sparen. Auch gut! Wills eh über die DLL machen, also werd ich mir wohl mal SWIG anschauen.\n\n

<!--EDIT|Hellmaker|1123572938-->
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2005-08-05 14:53.