Universität Ulm - Abteilung Angewandte Informationsverarbeitung

 


4. Übungsblatt zur Vorlesung Systemnahe Software II


Abgabetermin: Montag, 24.05.2004


Signale und Signalhandler    (10 Punkte)



Morse Code

Beim Morse Code werden Zahlen und Buchstaben in eine Folge von langen und kurzen Signalen (notiert als ``.'' bzw. ``-'') übersetzt, so entspricht etwa die Signalfolge ``kurz lang'' bzw. ``.-'' dem Buchstaben ``A'' oder die Signalfolge ``kurz kurz lang'' bzw. ``..-'' dem Buchstaben ``U''. Bis zu 6 einzelne Signale können notwendig sein, um einen Buchstaben zu kodieren. Das Ende eines Buchstabens ist an einer kurzen Übertragungspause (notiert als Leerzeichen) zu erkennen. ``... - ...'' steht dann etwa für ``SMS''.

Hilfsfunktionen

Die Datei morse.h, die auf der Homepage der Vorlesung zur Verfügung steht, definiert bereits zwei Funktionen:

Das kurze Beispielprogramm morse_test.c zeigt, wie die beiden Funktionen verwendet werden und gibt nebenbei auch noch eine Liste aller Zeichen mit ihrem Morse Code aus.

Aufgabe 1 - Morse Code dekodieren (5 Punkte)

In diesem Blatt soll nun ein Programm geschrieben werden, das Morse Code in Form von Unix-Signalen empfängt und in Buchstaben übersetzt. Dabei soll das Unix-Signal SIGUSR1 einem kurzen Morse-Signal und das Unix-Signal SIGUSR2 einem langen Morse-Signal entsprechen. Statt der Übertragungspause wird das Signal SIGTERM verwendet.
Testet Euer Programm zunächst, indem Ihr ihm von Hand (mit dem Kommando kill) einige Signale schickt. Zu beachten ist, daß ggf. fflush verwendet werden muß, damit ein ausgegebener Buchstabe sofort auf dem Bildschirm erscheint.

Aufgabe 2 - Morse Code kodieren (5 Punkte)

Schreibt jetzt ein Programm, das von der Kommandozeile eine Prozeß-ID und einen Text entgegen nimmt. Der Text soll dann als Morse Code kodiert wie oben beschrieben an den angegebenen Prozeß gesendet werden.
Ein erster Versuch wird zeigen, daß der Text nicht richtig ankommt. Warum? Paßt Euer Programm entsprechend an, so daß die Übertragung zumindest meistens funktioniert.

Hinweise



Viel Erfolg!



Hans Braxmeier