Hallo Leute, ich hab mich in letzter Zeit mehr und mehr mit dem Thema Betriebssystem auseinandergesetzt... ich habe gehört dass einkommende Zeichen in einem Buffer zwischengelegt und von dort weiterverarbeitet werden. Soweit alles klar doch nun meinte kürzlich jemand, dass dies in Betriebssystemen wie Windows oder MacOS nicht über einen Buffer sondern über z.B.: Windows messages gelöst wird. Kann mir bitte jemand erklären wie genau das funktioniert? Wie kommen die Zeichen über eine Message in das Programm? Gibt es für die Messages eine reservierte RAM Adresse? Gruß, Paul
In Windows, wie in allen anderen GUI, da hast du ja meist mehrere Fenster geöffnet. Die Texteingabe kommt zb. immer vom selben Device (Keyboard) und geht immer in das Fenster, was gerade im Vordergrund (aktiv) ist. Damit das funktioniert braucht es so ein Message System ... ============= Wenn du zb. ein Fenster definierst in deiner App, dann gibst du dem OS vom Windows eine Handler Funktion bekannt, die für dein Fenster "zuständig" ist. Windows ruft dann immer wenn etwas passiert (Event), was dein Fenster betrifft, den Event Handler deines Fensters auf. Auf deutsch, wenn dein Fenster im Vordergund ist, und du ein "Z" am Keyboard drückst, dann wird deine Event Handler Funktion aufgerufen mit der Information "Taste gedrückt - Z". Wenn du die Taste loslässt, dann kommt ein Event "Taste losgelassen- Z". Dieses Event System nennt man auch Message Messages ...
Hallo, ok vielen Dank für die rasche und informative Antwort ;). Und wo in der Application sich der Handler befindet (also wohin genau die Message geleitet wird) wird beim start des Programmes festgestellt nehme ich an? Liebe Grüße
Paul S. schrieb: > Und wo in der Application sich der Handler befindet (also wohin genau > die Message geleitet wird) wird beim start des Programmes festgestellt > nehme ich an? Im Fall von Windows gibt es zwei Arten wie man es machen kann: - klassisch command line - ein "richtiges" Windows Programm (Fenster) Im Falle des Command Line Modell läuft es wie früher. Das Programm kommuniziert über zwei Pipes (Stdin/Stdout). Pipes sind aus Sicht der Applikation wie Dateien zu handhaben. Man öffnet die Pipe und kommuniziert mit Standard Lese/Schreib Funktionen. Alles was man auf STDOUT schreibt wird am Fenster angezeigt. Wenn man ein Zeichen eintippt kommt es als Byte vom STDIN herein. --- Im Falle eines richtigen Windows Programm mit einem Fenster, da muss man für jedes Fenster eine Handler Funktion schreiben, die alle Events des Fenster behandelt. Diese Handler Funktion wird dem OS (Wndwows) meist gleich beim Programmstart bekannt gegeben (über eine API Funktion). "Hallo Windows, ich möchte bitte ein Fenster haben, und hier bitte schön ist meine Handler Funktion für dieses Fenster"
Vielen lieben Dank Thomas für deine Antworten, echt top ;) Eine Frage hab ich leider noch: Ich möchte meinem selbstgebauten DMX Mischpult eine Tastatur anbasteln um die z.B.: Szenen zu benennen und die Fader besser ins System einbinden. Als CPU dient ein 32-bit ARM AVR. Wenn ich das richtig verstanden habe, müsste ich für das eine Art HAL schreiben welche: Für die verschiedenen Applikationen auf dem Mischpult: Lichtsteuerung, medienbrowser, Soundsteuerung, Soundschnitt... muss ich einen handler schreiben. Dessen position wird beim Start in eine Liste des OS geschrieben wo man die Handleradressen aller laufenden Programme aufbewahrt und eine bool variable dazu um zu wissen welches Programm aktiv ist. Einen Interrupt auslöst wenn vom Keyboard Daten kommen Ich muss eine Art driver schreiben damit mein System die Tastatur "verseht" Das Zeichen wird in einem Buffer des OS gespeichert und an die Gerade offene Anwendung geschrieben "Nachricht taste z gedrückt" Und die Fader auch in Messages wie "Fader1 hoch/ab" verpacken? Würde das so Funktionieren? Alles Liebe und vielen Dank, Paul
Paul S. schrieb: > Ich möchte meinem selbstgebauten DMX Mischpult eine Tastatur anbasteln > um die z.B.: Szenen zu benennen und die Fader besser ins System > einbinden. Als CPU dient ein 32-bit ARM AVR. 32 bit Arm? Womöglich ein STM32? Viele STM haben schon alles was man braucht in den Libs vom Hersteller bzw. in dem Sample Code des Hersteller dabei. Ich nehme mal an eine USB Tastatur? Es gibt fertige Implementierungen für USB devices, auch Keyboard. Paul S. schrieb: > Ich muss eine Art driver schreiben damit mein System die Tastatur > "verseht" Du denkst zu kompliziert. Da es ein selbstgebautes DMX Mischpult ist, wird auch die Software selbstgebaut sein? Wenn alles aus einer Hand kommt, dann ist es meist recht simpel: Da mach ich einen Tastatur Buffer und lasse alle meine Module auf diesen Buffer zugreifen. == Im Falle eines OS wie Windows ist es nur deshalb so kompliziert, weil es: - standardisiert sein muss - verschiedenste Entwickler betrifft die sich nicht kennen - closed source ist - gegenseitig abgeschottet sein muss
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.