stexie
15-09-2003, 12:30
ich habe folgendes Problem:
Ich habe ein Automatensystem entwickelt, dass auf meinem Entwicklungsrechner einwandfrei funktioniert. Einige grundlegende Infos
dazu:
Das Hauptprogramm steuert die angeschalteten Geräte (Münzprüfer, Geldnotenleser, Drucker, usw.) und fragt zur Kommunikation mit dem Kunden stzetig die Tastatur ab. Zu Beginn wird aus dem Hauptprogramm heraus eine Grafikroutine als Thread gestartet. Die Grafikroutine läuft dann (unabhängig vom Hauptprogramm) und gibt nur Stausinformationen aus. Die Grafik wurde mit SDL erstellt. Zu Beginn wird mit SDL_INIT_VIDEO der SDL-Videomodus initialisiert und danach mit SDL_SetVideoMode ein Fenster (hier 640x480) erzeugt.
Mit dem Initialisieren der Grafik wird auch der Focus an die Grafik übertragen. Allerdings hole ich mir im Hauptprogramm mit
XSetInputFocus() den Focus ins Hauptprogramm zurück, damit ich innerhalb des Hauptprogramms weiterhin die Tastatur abfragen kann.
In meinem Bezahlautomaten sitzt jetzt ein SingleBoardComputer. Also habe ich das Programm auf den Computer übertragen und gestartet. Das Hauptprogramm (ohne die Grafik) funktioniert problemlos. Starte ich jetzt aber die Grafik wird das neue Fenster bei der SDL-Initialisierung immer als Vollbild erzeugt, die Maus ist ab sofort tot und die Tatstatur reagiert auch nicht mehr. Ich kann mich zwar z. B. über telnet auf den Computer einloggen, allerdings kann ich den Prozess nicht beenden, da ich keine root-Rechte habe. Damit bleibt mir nicht anderes übrig, als den Rechner neu zu starten.
Kurioserweise wird auch dann ein Vollbild initialisiert, wenn ich mit SDL_SetVideoMode z. B. ein Fenster mit 400x200 Pixel erzeuge. Das Bild wird dann zwar in der richtigen Größe dargestellt, allerdings wird das kleine Fenster dann mittig auf dem Display dargestellt und der Rahmen wird einfach schwarz gezeichnet. Jetzt kann ich auch nicht mehr z. B. in die Konsole umschalten. Auf dem Entwicklungsrechner wurde nur das Fenster neu erstellt, man konnte aber alle anderen Fenster im Hintergrung noch sehen und jederzeit dahin umschalten (z. B. durch Anklicken mit der Maus).
Ich bin wirklich ratlos und für jeden Hinweis dankbar. Außerdem muss der Automat bald laufen, das ganze ist nämlich eine Diplomarbeit und der Abgabetermin rückt bedrohlich näher…
Schon jetzt Danke für jeden Hinweis…
Ich habe ein Automatensystem entwickelt, dass auf meinem Entwicklungsrechner einwandfrei funktioniert. Einige grundlegende Infos
dazu:
Das Hauptprogramm steuert die angeschalteten Geräte (Münzprüfer, Geldnotenleser, Drucker, usw.) und fragt zur Kommunikation mit dem Kunden stzetig die Tastatur ab. Zu Beginn wird aus dem Hauptprogramm heraus eine Grafikroutine als Thread gestartet. Die Grafikroutine läuft dann (unabhängig vom Hauptprogramm) und gibt nur Stausinformationen aus. Die Grafik wurde mit SDL erstellt. Zu Beginn wird mit SDL_INIT_VIDEO der SDL-Videomodus initialisiert und danach mit SDL_SetVideoMode ein Fenster (hier 640x480) erzeugt.
Mit dem Initialisieren der Grafik wird auch der Focus an die Grafik übertragen. Allerdings hole ich mir im Hauptprogramm mit
XSetInputFocus() den Focus ins Hauptprogramm zurück, damit ich innerhalb des Hauptprogramms weiterhin die Tastatur abfragen kann.
In meinem Bezahlautomaten sitzt jetzt ein SingleBoardComputer. Also habe ich das Programm auf den Computer übertragen und gestartet. Das Hauptprogramm (ohne die Grafik) funktioniert problemlos. Starte ich jetzt aber die Grafik wird das neue Fenster bei der SDL-Initialisierung immer als Vollbild erzeugt, die Maus ist ab sofort tot und die Tatstatur reagiert auch nicht mehr. Ich kann mich zwar z. B. über telnet auf den Computer einloggen, allerdings kann ich den Prozess nicht beenden, da ich keine root-Rechte habe. Damit bleibt mir nicht anderes übrig, als den Rechner neu zu starten.
Kurioserweise wird auch dann ein Vollbild initialisiert, wenn ich mit SDL_SetVideoMode z. B. ein Fenster mit 400x200 Pixel erzeuge. Das Bild wird dann zwar in der richtigen Größe dargestellt, allerdings wird das kleine Fenster dann mittig auf dem Display dargestellt und der Rahmen wird einfach schwarz gezeichnet. Jetzt kann ich auch nicht mehr z. B. in die Konsole umschalten. Auf dem Entwicklungsrechner wurde nur das Fenster neu erstellt, man konnte aber alle anderen Fenster im Hintergrung noch sehen und jederzeit dahin umschalten (z. B. durch Anklicken mit der Maus).
Ich bin wirklich ratlos und für jeden Hinweis dankbar. Außerdem muss der Automat bald laufen, das ganze ist nämlich eine Diplomarbeit und der Abgabetermin rückt bedrohlich näher…
Schon jetzt Danke für jeden Hinweis…