Die Initialisierung funktioniert nur, wenn der IO-Warrior24 (USB-Dongle) beim ersten Start des Programms bereits eingesteckt ist. Dann kann man ihn rausziehen, wieder einstecken und neu initialisieren. Geht alles.
Wenn der IO-Warrior24 bei der ersten Initialisierung nicht eingesteckt ist, bekommt man ihn nicht mehr zum Laufen. D.h. startet man zuerst das Programm und steckt dann den IO-Warrier24 am USB-Port ein, dann kann über die Bibliothek der IO-Warrier24 nicht mehr gefunden und in Betrieb genommen werden.
Warum?
Machen wir was falsch oder was müsste man tun, um in der Reihenfolge bei der Inbetriebnahme frei sein zu können?
(Betriebssystem Win 7, 32 oder 64 Bit)
Nachträgliche Initialisierung
Moderator: Guido Körber
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Re: Nachträgliche Initialisierung
Haben Sie dazu mal einen Auszug aus dem Code?
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: Nachträgliche Initialisierung
Was bedeutet denn initialisiert? Ist damit das IowKitOpenDevice() gemeint oder die Initialisierung des I2C-Modus?
Re: Nachträgliche Initialisierung
Hallo,
anbei ein kleines Java-Testprogramm, was das Problem verdeutlichen soll:
package TestIOWarrior;
import com.codemercs.iow.IowKit;
import javax.swing.JFrame;
public class Main extends JFrame
{
public static void main(String [ ] args)
{
if(IowKit.openDevice()!=0L)
{
System.out.println("IO-Warrior geöffnet");
}
else
{
System.out.println("IO-Warrior nicht gefunden.");
// Sicherheitshalber schließen des Treibers.
// Das Problem tritt aber auch ohne diese Zeile auf.
IowKit.closeDevice(0);
}
//---------------------------------------------
// Während der Wartezeit IO-Warrior einstecken.
//---------------------------------------------
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Der IO-Warrior wurde korrekt erkannt und Programm läuft weiter.
if(IowKit.openDevice()!=0L)
{
// hier sollte das Programm hin verzweigen, geht aber in den else Zweig
System.out.println("IO-Warrior geöffnet");
}
else
{
// trotz eingestecken und korrekt erkannten IO-Warriors
// landet das Programm immer hier. Erst nach Neustart des Programms
// liefert IowKit.openDevice() einen Wert != 0 zurück.
System.out.println("IO-Warrior nicht gefunden.");
}
}
}
anbei ein kleines Java-Testprogramm, was das Problem verdeutlichen soll:
package TestIOWarrior;
import com.codemercs.iow.IowKit;
import javax.swing.JFrame;
public class Main extends JFrame
{
public static void main(String [ ] args)
{
if(IowKit.openDevice()!=0L)
{
System.out.println("IO-Warrior geöffnet");
}
else
{
System.out.println("IO-Warrior nicht gefunden.");
// Sicherheitshalber schließen des Treibers.
// Das Problem tritt aber auch ohne diese Zeile auf.
IowKit.closeDevice(0);
}
//---------------------------------------------
// Während der Wartezeit IO-Warrior einstecken.
//---------------------------------------------
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Der IO-Warrior wurde korrekt erkannt und Programm läuft weiter.
if(IowKit.openDevice()!=0L)
{
// hier sollte das Programm hin verzweigen, geht aber in den else Zweig
System.out.println("IO-Warrior geöffnet");
}
else
{
// trotz eingestecken und korrekt erkannten IO-Warriors
// landet das Programm immer hier. Erst nach Neustart des Programms
// liefert IowKit.openDevice() einen Wert != 0 zurück.
System.out.println("IO-Warrior nicht gefunden.");
}
}
}