Autor Thema: Problem mit Keyboard-Treiber  (Gelesen 4720 mal)

livinskull

  • Beiträge: 27
    • Profil anzeigen
    • Livinskulls site
Gespeichert
« am: 16. December 2007, 21:01 »
Moin, moin

ich hab grad n Problem mit meinem Tastaturtreiber, und zwar funktioniert die Funktion get_line ganz unten nicht wie sie soll. Die sollte nämlich erst beendet werden, wenn Enter gedrückt wird, sie wird allerdings sofort beendet ohne das überhaupt eine Taste gedrückt wurde...
Ich denke da ist irgendwo ein logischer Fehler in der while-schleife, ich komm aber einfach nich drauf  :?

der quellcode ist hier: http://nopaste.org/p/a78gLVdOL

Danke im vorraus, livinskull


Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 17. December 2007, 10:14 »
Moin,

ein problem könnte ich sehen, wenn der puffer bereits voll ist, bevor du get_line aufrufst. die letzte zelle wird so wie ich es sehe nie gelöscht.

Eine anderer punkt, bist du dir sicher, das der pressed_keys puffer auch wirklich lehr ist? Sich in dem punkt nicht auf den kompiler verlassen, und selber in einer Init funktion auf den start wert setzen.

du schiebst deine eingelesenen zeichen kräftig durch die gegend. ggf währe ein ringpuffer eine alternative.

aufpassen mit der null terminierung. die benötigt im übergebenen Puffer auch platz. nicht das dadurch andere Daten überschrieben werden.

gruss

livinskull

  • Beiträge: 27
    • Profil anzeigen
    • Livinskulls site
Gespeichert
« Antwort #2 am: 19. December 2007, 16:16 »
OK, klappt jetzt
Verwende jetzt nen Ringbuffer und statt dem zeugs mit den pointern (
buff-tmp <groesse) einfach ne variable die mitzählt.
PUffer wird jetz auch gleich ordentlich initialisiert, aber ich glaub da war was mit den pointern kaputt

thx for help

livinskull


 

Einloggen