CallFunction kann Device nicht schliessen PB4.51

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
BlueHoschi
Beiträge: 97
Registriert: 02.10.2007 07:19

CallFunction kann Device nicht schliessen PB4.51

Beitrag von BlueHoschi »

Hallo Leute,

ich habe eine automatische Adressprüfung für meine Velleman USB-Karte, mit der ich immer spiele.
Das hat mit PB 4.0 gut funktioniert. Aber mit 4.51 meldet er einen Lesefehler auf die Kartenadresse.
Siehe Code:

Code: Alles auswählen

If OpenLibrary(0,"k8055d.dll")
 Debug "Dll geladen" ; Meldung DLL gefunden
 For smer = 0 To 3               ;Es gibt 4 mögliche Kartenadressen 0-3
   ana1=-1                          ;Variable ana1 vor der Prüfung auf -1 setzen
 CallFunction(0,"OpenDevice",smer)
delay(30)                           ;Atempause
   ana1 = CallFunction(0,"ReadAnalogChannel",1)  ;Ist der Wert > -1 hängt eine Karte dran
   Debug ana1                      ;Wert des analogen Kanals checken
   Debug smer                      ;gerade geprüfte Kartenadresse darstellen
  If ana1 >= 0                      ;Ein analoger Wert am Kanal 1 gefunden?
  erreicht = smer                  ;Karte gefunden! Adresse gleich meinem Schmiermerker
  EndIf
  Delay(50)                         ;langsam an nur zur Sicherheit
 CallFunction(0, "CloseDevice", smer)  ;Hier liegt das Problem, bei PB 4.0 gabs kein Gemecker, jetzt wird folgendes gemeldet: Ungültiger Speicherzugriff (Lesefehler an der Adresse 0)
;Meine Schleife fängt ja bei 0 an. Gemeint ist also die Kartenadresse.
 
 Next
Else
 debug "Keine Dll" ;-Meldung keine DLL gefunden
EndIf
End
Wenn ich die Karte aber in der Schleife nicht schließe, liest das Programm aus allen offenen Kartenadressen den Analogwert.
D.H. von 0-3 werden alle Analogwerte gelesen und der höchste Wert in die Variable geschrieben (scheint zumindest so). Somit ist die Variable "ana1" immer > -1. Die Schleife geht bis 3 und so steht die Variable "erreicht" auch zum Schluß auf 3.
Meine Karte ist aber auf 0 Adressiert und ich kann nichts steuern, weil die falsche Karte angesprochen wird.

Ich hoffe das ist einigermassen verständlich formuliert.

Für mein Verständnis ist das ein Bug, aber falls ich doch irgendwie einen Programmierfehler eingebaut habe, dann bitte ich diesen Thread zu verschieben und mir eben per PN zu sagen wohin, damit ich´s finde.

Gruß Holger
Wer Dir Steine in den Weg legt, pflastert den vielleicht.

PB 5.21, Win 7 64 bit
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: CallFunction kann Device nicht schliessen PB4.51

Beitrag von HeX0R »

CloseDevice hat keine Parameter!
(Steht zumindest hier)
Benutzeravatar
BlueHoschi
Beiträge: 97
Registriert: 02.10.2007 07:19

Re: CallFunction kann Device nicht schliessen PB4.51

Beitrag von BlueHoschi »

hmpf...
Okay, war ein Bug, aber der liegt wohl eher bei mir.

@Mod: Wenn bitte einer diese Peinlichkeit (meinerseits) verschieben würde.
Danke.
Wer Dir Steine in den Weg legt, pflastert den vielleicht.

PB 5.21, Win 7 64 bit
Antworten