G Y M N A S I U M B O N N S T R A S S E. H ü r t h. Programmierung der. seriellen Schnittstelle

Größe: px
Ab Seite anzeigen:

Download "G Y M N A S I U M B O N N S T R A S S E. H ü r t h. Programmierung der. seriellen Schnittstelle"

Transkript

1 G Y M N A S I U M B O N N S T R A S S E H ü r t h Schriftliche Facharbeit im Fach Informatik über das Thema Programmierung der seriellen Schnittstelle zu Händen von Herrn Holland An-Hoa Nguyen aus: Hürth-Efferen Hürth, 15. Januar

2 Themensteller: Herr Holland Informatiklehrer am Gymnasium (Projektleiter) Inhaltsverzeichnis 1. Einleitung 1 2. Vorbereitung Recherche Zusammenfassung der Ergebnisse 2 3. Die serielle Schnittstelle Funktionsweise Programmierung in Pascal Test-Programme zum Senden und Empfangen von Daten 5 4. Das GPS-Gerät Der GPRMC-String Analyse des Datensatz Organisation der Daten in einer linearen Liste 7 5. Analyse des fertigen Programms 8 6. Fazit Erklärung der selbständigen Erarbeitung Quellennachweis Anhang Einleitung Im Informatikunterricht am Gymnasium Bonnstrasse ist im Curriculum für das erste Halbjahr der Stufe 13 vorgeschrieben, dass die Schüler ein Projekt auswählen bzw. selbst bestimmen. In mehreren Gruppen sollen sich dann die Schüler mit den Problematiken, die das Projekt aufwirft, beschäftigen, die Lösungen eigenständig erarbeiten und am Ende ein funktionsfähiges Programm präsentieren, das den Projektvorgaben entspricht. Dieses Jahr handelt es sich um das im Folgenden beschriebene Projekt: Ein GPS-Gerät wird über die serielle Schnittstelle an einen PC angeschlossen. Das Gerät sendet kontinuierlich Daten, die vom Computer empfangen und ausgewertet 2

3 werden. Nun soll zusätzlich eine Karte in einem bestimmten Bildformat auf dem Bildschirm dargestellt werden und mit den empfangenen Daten die aktuelle Position auf der Karte sichtbar sein. Im Projekt ergaben sich zwei Hauptproblematiken: Einmal handelt es sich um die Programmierung der seriellen Schnittstelle in Pascal. Das zweite Problem besteht darin, eine Bilddatei in Pascal darzustellen. Hierzu hat der Kurs drei Gruppen mit je drei Mitgliedern gebildet, von denen sich zwei mit der Grafik und die dritte Gruppe um die Programmierung des COM-Port kümmern soll. Die Gruppe, in der ich mich befinde, wird komplettiert von Heiko Wilke und Mario Willems und befasst sich mit dem Auslesen der Daten aus der Schnittstelle und deren Auswertung. Das Ziel der Gruppe war es, die Funktionsweise der seriellen Schnittstelle eigenständig zu erschließen und mit Hilfe dieses Wissens in Pascal ein Programm zu schreiben, das die von dem GPS-Gerät gesendeten Daten empfängt. Dieses Programm soll zusätzlich die Angaben für Länge und Breite aus dem kontinuierlichen Datenstrom separieren und als Variablen speichern. Diese Daten sollen dann in einer als Warteschlange fungierenden linearen Liste gespeichert werden. Da nur wenige Jahrgänge ein solches Projekt erfolgreich abgeschlossen haben, ist es eine weitere Motivation für uns, zu dem erlesenen Kreis derer zu gehören, denen dieses Projekt tatsächlich gelungen ist. Ich hoffe in dieser Facharbeit kann ich die Entwicklung des fertigen Programms zusammen mit dem neu erworbenen Wissen darstellen und so das Ergebnis der Arbeit dieser Gruppe zusammenfassen und illustrieren. 2. Vorbereitung 2.1 Recherche Zu Beginn unserer Arbeit stand die Recherche von Informationen über die Programmierung der seriellen Schnittstelle. Hierzu standen alle möglichen Informationsquellen zur Verfügung. Besuche in der Bücherei blieben erfolglos, da die Bücher, die sich eingehend mit Pascal befassen, nur noch schwer erhältlich sind. Keins der Bücher, die gefunden werden konnten, enthielten Informationen bezüglich der Programmierung der seriellen Schnittstelle. So bestand der Großteil der Zeit am Anfang aus Recherche im Internet. Benutzt wurden einerseits die Suchmaschine Google sowie die Seite Quellcodes.de. In der Suchmaschine wurden insbesondere die Suchbegriffe serielle Schnittstelle + Pascal benutzt. Es wurden mehrere Seiten gefunden, die eine 3

4 ungefähre Beschreibung der seriellen Schnittstelle boten und auch die Befehle erläuterten, die in Pascal nötig sind, um die Schnittstelle anzusprechen. Bei Quellcodes.de gibt es für jede aktuelle Programmiersprache eine eigene Sparte, u.a. also auch für Pascal. Dort konnten viele Units und viel Programmcode bezüglich der Programmierung der Schnittstelle gefunden werden, diese blieben jedoch anfangs unverständlich. 2.2 Zusammenfassung der Ergebnisse Grundlage des Programms sind zwei Quellen, einerseits die Seite Interfacing The Serial/RS 232 Port, andererseits das Buch Praxis der GPS-Navigation. Die erwähnte Webpage enthält eine über 20 Seiten große Beschreibung der seriellen Schnittstelle, sowie ein sehr gut dokumentierter Programmcode, der sowohl Daten aus dem COM- Port ausliest, als auch Daten über ihn sendet. Bis ins kleinste Detail wird die Funktionsweise der Schnittstelle beschrieben. Zusätzlich werden die Befehle erläutert, mit denen die Schnittstelle angesprochen werden kann. Die Seite erklärt sehr genau zwei verschiedene Wege, um Daten über die Schnittstelle zu übermitteln. Das oben erwähnte Buch enthält ein Kapitel, in dem in allen Einzelheiten der von dem GPS-Gerät gesendete Datenstrom beschrieben wird. Diese beiden Beschreibungen bilden die Grundlage für das Programm, das die von dem GPS-Gerät gesendeten Daten empfängt und auswertet. Der Kurs hat bereits in der 12.1 das nötige Wissen erworben,die Daten in einer linearen Liste zu organisieren, so dass dies nur eine praktische Anwendung des bereits Erlernten ist Die serielle Schnittstelle 3.1 Funktionsweise Bei der seriellen RS 232-Schnittstelle handelt es sich um eine der Standard- Schnittstellen des Computers. Über sie werden z.b. die Maus und das Modem an den PC bzw. MAC angeschlossen. Der Unterschied zur parallelen Schnittstelle besteht in der Art der Datenübertragung. Die serielle Schnittstelle sendet jedes Bit nacheinander, also ist die Datenübertragung seriell. Der Parallel-Port dagegen kann mehrere Bits zur selben Zeit transportieren. Über den COM-Port kann man Daten sowohl senden als auch empfangen. Dies kann im bidirektionalen Modus sogar zur selben Zeit geschehen. Die Schnittstelle hat 12 Register, über die die serielle Schnittstelle gesteuert werden 1 Im Literaturverzeichnis befindet sich eine Auflistung aller verwendeten Internetadressen. 4

5 kann. Bei Registern handelt es sich um spezielle Speicherplätze im Arbeitsspeicher des Computers, die genau ein Byte groß sind und zur Steuerung der Schnittstelle dienen. Hierbei wird zwischen Read-Only, Write-Only und Read/Write Registern unterschieden. Wie der Name schon andeutet, kann aus Read-Only Registern nur gelesen werden, der Inhalt eines Write-Only Registers nur belegt werden und ein Read/Write Register kann beides. Da jedes Register ein Byte enthält, gibt es also 8 Bits in einem Register, die entweder mit 0 oder mit 1 belegt sein können. Die 12 Register kann man über acht Adressen ansprechen. Diese acht Adressen sind durch ihren Offset, also ihren Abstand zu einer Basisadresse, festgelegt. Da der Computer mehrere serielle Schnittstellen (COM1, COM2, etc.) haben kann, erhält jeder der COM-Ports eine andere Basisadresse im Speicher. Im Anhang befindet sich eine Auflistung der Basisadressen für COM1 COM4. Diese Speicheradressen können aus dem Bios ausgelesen werden, jedoch sind sie auf Standard-PCs immer gleich. Die absoluten Adressen der Register erhält man aus der Summe aus Basisadresse der entsprechendes Schnittstelle und dem zu dem Register gehörenden Offset. Für die 12 Register werden nur acht Adressen benötigt durch das DLAB (Divisor Latch Access Bit). Das DLAB ist ein Bit im Line Control Register. Abhängig davon, ob dieses Bit auf 1 oder 0 gesetzt wird, werden zwei weitere Register verfügbar. Dazu kommt noch, dass einige Adressen zwei Register ansprechen, nämlich ein Read-Only und ein Write-Only Register, die beide als separate Register angesehen werden. Ich werde im Folgenden nur die wichtigsten Register erklären, nämlich den Transmitter Holding Buffer/Receiver Buffer, das Line und Modem Control Register (LCR/MCR) sowie das Divisor Latch Low und Divisor Latch High Byte. 2 Der Transmitter Holding Buffer bzw. Receiver Buffer ist das Register, durch das ein Byte gesendet bzw. empfangen werden kann. Es ist dementsprechend ein Read/Write Register. Das Line Control Register ist ein Write-Only Register. Einerseits enthält das LCR das weiter oben erwähnte DLAB. Ist dieses auf 1 gesetzt, sind die Register Divisor Latch Low und Divisor Latch High Byte verfügbar. Mit dem Setzen dieser beiden Register kontrolliert man die Übertragungsgeschwindigkeit der seriellen Schnittstelle. 3 Über das LCR werden die Einstellungen der seriellen Schnittstelle bei der Datenübertragung, wie z.b. die Länge des Stop Bit so wie die Parität 4 eingestellt. Aus 2 Im Anhang befindet sich eine Auflistung aller Register mit ihren Offsets. 3 Im Anhang befindet sich eine Belegungstabelle für das Divisor Latch Low und Divisor Latch High Byte, zusammen mit der dazugehörigen Übertragungsgeschwindigkeit in BPS. 4 Das Stop Bit kennzeichnet das Ende eines Bytes, das Parität Bit zeigt, ob die Datenübertragung fehlerfrei war. 5

6 dem Line Status Register kann nur gelesen werden, es enthält Informationen wie z.b., ob Daten im Receiver Buffer enthalten sind Programmierung in Pascal Um einzelne Bits in einem Register zu lesen, zu setzen oder zu löschen geht man wie folgt vor. Man kann aus einem Register immer nur ein Byte auslesen. Um nun einzelne Bits aus diesem Byte zu belegen, vergleicht man dieses ausgelesene Byte über eine OR- Verknüpfung mit einem Byte, in dem die zu setzenden Bits mit 1 belegt sind, der Rest mit 0. Das funktioniert, da die OR-Verknüpfung die beiden Bytes bitweise vergleicht. Ist das zu setzende Bit im Original 0, so wird es durch das OR auf 1 gesetzt, ist es 1, so bleibt es durch das OR 1. Man löscht ein einzelnes Bit über eine AND-Verknüpfung. Ist im Original ein Bit auf 1 gesetzt und wird dieses mit einem auf 1 gesetzten Bit an selber Stelle über ein AND verglichen, so wird das neue Bit auf 0 gesetzt. Um nun zu betrachten, ob einzelne Bits in einem Byte gesetzt sind oder nicht, verknüpfe ich das Byte mit einem zweiten Byte, in dem das zu analysierende Bit gesetzt ist, über ein AND. War das Bit gesetzt, muss bei dem Vergleich mit AND das Vergleichsbyte herauskommen. Das AND setzt alle übrigen Bits auf 0, ist das zu betrachtende Bit im Original gesetzt, so bleibt es nach dem Vergleich erhalten. Also kommt nach der Verknüpfung mit AND das Vergleichsbyte heraus. Ist das Bit im Original nicht gesetzt, ergibt der Vergleich 0. Im Programmcode selber wird das entsprechende Byte nicht mit einer Binärzahl verglichen sondern mit der entsprechenden Zahl im 10er System. Ist nur das Bit 0 gesetzt, handelt es sich um den Integer Wert 0, sind alle Bits gesetzt, handelt es sich um den Wert 255. Will man also mehrere Bits zur selben Zeit setzen, so nimmt man die Bits als Potenzen von 2 und addiert diese. Um die Bits 3 und 5 zu setzen, belegt 3 5 man das Register mit 40, da = 40. Mit dem Befehl port aus Pascal und der zu dem Register gehörenden Speicheradresse kann man Daten aus dem Register auslesen bzw. Daten in das Register schreiben. Da ein Register nur ein Byte groß ist, kann immer nur ein Byte empfangen werden, was einem Zeichen vom Pascal-Typ character entspricht. In dem folgenden Kapitel wird dies aber noch einmal deutlich, da dort zwei Beispielprogramme genauer untersucht werden Test-Programme zum Senden und Empfangen von Daten Um das neu erlangte Wissen nun anzuwenden, wurden zwei Test-Programme geschrieben. Das erste sendet Daten über den COM-Port, das zweite Programm, das zur 5 vgl. Peacock, Interfacing The Serial/RS-232 Port Part 3 6 vgl. Steinberg, Programmierung der seriellen und parallelen Schnittstelle unter DOS 6

7 selben Zeit auf einem anderen Rechner läuft, der mit dem ersten über ein Nullmodem Kabel verbunden ist, empfängt die Daten. Da beide Programme zum Teil sehr ähnlich sind, werden besonders die Unterschiede im Hauptprogramm dargestellt. Zu Beginn des Programms werden die Adressen für die einzelnen Register der Schnittstelle als Konstanten in den Zeilen 3-11 festgelegt. Da zwei Rechner über den COM-Port 1 verbunden sind, lautet die Basisadresse $02F8 7. Das Line Status Register z.b. hat den Offset 3, also ergibt sich für die absolute Adresse $02FA. In Zeile 17 wird das Line Status Register mit $80 belegt. Die hexadezimale Zahl 80 entspricht 128 im Zehnersystem, die wiederum 7 2 entspricht. Also wird das 7. Bit, das DLAB, auf 1 gesetzt. Die Belegungen des Divisor Latch Low und High Byte in den Zeilen 18 und 19 stellen für die Schnittstelle eine Übertragungsgeschwindigkeit von 2400 BPS ein. In Zeile 20 wird das LCR mit $03 belegt, also werden die Bits 0 und 1 gesetzt, da = 3ist. Nun wird eine repeat-schleife begonnen, in der ein Buchstabe vom Typ character über die Tastatur eingelesen und auf dem Bildschirm ausgegeben wird. In Zeile 24 wird dann der Transmitter Buffer mit dem Buchstaben belegt, das Zeichen wird also gesendet. Die Schleife endet, wenn das Zeichen dem ASCII Code 27 entspricht, also die Escape-Taste gedrückt wird. Das Programm zum Empfang der Daten ist ähnlich aufgebaut. Die Schnittstelle muss mit den Einstellungen initialisiert werden, ansonsten funktioniert die Datenübertragung nicht. Der einzige Unterschied lässt sich nun in der Repeat-Schleife im Hauptprogramm in den Zeilen finden. Dort wird in einer Schleife die Variable test vom Typ byte mit dem Line Status Register belegt. Über den AND-Vergleich wird jedes Mal überprüft, ob das erste Bit gesetzt ist, also sich Daten im Receiver Buffer befinden. Befinden sich Daten in dem Register, werden diese ausgelesen. Da es sich bei den ausgelesenen Daten um ein Byte handelt, wird dieses durch die Funktion char in ein Zeichen umgewandelt und auf dem Bildschirm ausgegeben. Der Bidirektionale Modus funktioniert im Prinzip ähnlich. Die Initialisierung der Schnittstelle bleibt gleich. Der einzige Unterschied besteht darin, dass sich dann in beiden Programmen Routinen zum Senden und Empfangen befinden. Das Programm entscheidet abhängig davon ob gerade Daten im Receiver Buffer sind oder der Benutzer gerade neue Daten über die Tastatur angibt, ob gesendet oder empfangen wird. 4. Das GPS-Gerät 4.1 Der GPRMC-String 7 vgl. Anhang S. 14 7

8 Der von dem GPS-Gerät gesendete, kontinuierliche Datenstrom kann nun durch ein Programm empfangen und auf dem Bildschirm ausgegeben werden. Nun besteht die Aufgabe der Gruppe darin, die Informationen für Länge und Breite aus dem Datenstrom herauszufiltern. Das GPS-Gerät sendet ununterbrochen unterschiedliche Datensätze. Am Anfang jedes Datensatzes steht ein $, darauf folgt ein Adressfeld, das aus fünf Zeichen besteht. In diesem stehen die ersten zwei Zeichen für die Bezeichnung des Datensatz, in diesem Fall GP für GPS. Die letzten drei Zeichen stehen für die Art des Datensatz. Der für die Navigation interessanteste Datensatz ist der GPRMC -Datensatz 8, da dieser die Angaben für Breite und Länge enthält. Hier ist ein Beispiel für einen solchen Datensatz: $GPRMC,110004,A, ,N, ,E,009.8,188.5,140796,000.1,E *7C Die Daten für die Breite befinden sich hinter dem zweiten Komma. Die ersten zwei Ziffern bezeichnen die Breite in Grad, in diesem Fall 54. Danach folgt die Anzahl der Minuten mit drei Nachkommastellen, hier also 44,103. Der Buchstabe nach dem darauffolgenden Komma bezeichnet die Himmelsrichtung, wodurch sich in diesem Beispiel eine Angabe von 54 44,103 nördlicher Breite ergibt. Die Länge folgt nach der Angabe für die Breite. Sie lässt sich parallel wie die Breite bestimmen, der einzige Unterschied besteht darin, dass die Länge in Grad bis zu dreistellig sein kann. So ergibt sich hier eine Länge von 10 4,706 Östlicher Länge Analyse des Datensatz Mit dem Verständnis des Datensatzes gab es nun zwei Aufgaben zu erfüllen. Einerseits mussten aus den gesendeten Datensätzen der mit dem Adressfeld GPRMC von den anderen separiert werden und dieser noch analysiert werden, um die Breite und Länge zu erhalten. Die Idee bestand darin, in dem Hauptprogramm über eine kontinuierliche Schleife die Daten in Form von characters aus dem Receiver Buffer auszulesen und jedes einzelne Zeichen an eine Prozedur zu schicken. So wird ein Konflikt mit der Routine vermieden, die Daten über die Schnittstelle empfängt. Die Prozedur untersucht das ihr übergebene Zeichen, handelt es sich um ein $, so beginnt es die Daten in einem Array zu speichern. Sobald sich in dem Array sechs Zeichen befinden, also das Adressfeld des Datensatzes, wird der Array mit einer Funktion analysiert. Um festzustellen, ob der Datensatz das Adressfeld GPRMC hat, reicht es aus, das fünfte und sechste Zeichen zu betrachten. Handelt es sich um die Buchstaben M und C, so muss es 8 RMC = Recommended Minimum Specific GPS Data 9 vgl. Krumm, Praxis der GPS-Navigation S.56 ff. 8

9 sich um den gesuchten Datensatz handeln, da kein anderer Datensatz diese Buchstaben an der Stelle enthält. Erkennt die Funktion also, dass es sich um den gesuchten Datensatz handelt, werden weiter Daten in dem Array gespeichert, bis der Array 60 Zeichen enthält. Es ist vollkommen ausreichend nur 60 Zeichen des Datensatzes auszulesen, da hierin bereits die nötigen Angaben für Breite und Länge enthalten sind. Nun wird der Prozedur aber immer nur ein Zeichen übergeben. Sie muss entscheiden, ob sie nach den für die Analyse obligatorischen sechs Zeichen entweder weiter Daten im Array speichern oder auf den nächsten Datensatz warten soll. Dieses Problem wird durch eine globale Variable des Typs boolean gelöst. Erkennt die Prozedur den Datensatz als relevant, wird die Variable auf true gesetzt, ansonsten auf false. Nun wird der Array mit den ersten 60 Zeichen des GPRMC Datensatzes an eine weitere Prozedur übergeben. Diese Prozedur basiert auf der Idee, dass man in dem String anhand der Kommas die Position der Länge und Breite bestimmen kann. So folgt auf das dritte Komma immer eine 10-stellige Angabe für die Breite, darauf folgt wieder ein Komma und nach diesem befindet sich der Buchstabe für die Himmelsrichtung. Dementsprechend befindet sich nach dem fünften Komma ein 11-stellige Angabe für die Länge und hinter dem darauf folgenden Komma befindet sich wieder die Himmelsrichtung. Nun müssen die Zahlen noch von dem Typ character in den Typ real umgewandelt werden und noch einige Rechnungen vorgenommen werden, bevor man die Angaben für Grad und Minuten erhält. Die genaueren programmtechnischen Details kann man in Kapitel 5 finden. 4.3 Organisation der Daten in einer linearen Liste Um die Daten nun in einer linearen Liste zu speichern, wurde erst mal das Programm, das aus der 12.1 stammt und die lineare Liste in Pascal implementiert, in eine Unit umgeschrieben. In der Unit befinden sich u.a. die Standard-Listen-Prozeduren hinten_dran und vorne_ab. Da mit Hilfe der Liste eine Warteschlange simuliert werden soll, benötigt man nur diese beiden Prozeduren. hinten_dran fügt Elemente am Ende der Liste an und vorne_ab nimmt Elemente am Kopf der Liste weg, beide Prozeduren sind korrekt implementiert. Der Typ, der die Elemente der Liste darstellt, wird hier den entsprechenden Bedürfnissen angepasst. Anstatt nur einer Variable vom Typ integer enthält er jetzt jeweils eine Variable für die Länge und für die Breite eines neu deklarierten Typs. Dieser Typ für die Länge und Breite enthält einerseits die aus dem Datensatz stammende Originalangabe für die Länge bzw. Breite vom Typ real. Dann enthält dieser Typ noch Variablen für die Angaben in Grad, Minuten, 9

10 Bruchteile von Minuten vom Typ longint sowie eine Variable vom Typ character für die Himmelsrichtung. Da im Hauptprogramm immer nur die Originalangaben für die Position an die Liste weitergegeben werden, befindet sich in der Unit die Prozedur umrechnung. Diese wandelt diese Angabe in die Werte für Grad, Minuten und Bruchteile von Minuten um und speichert diese in der übergebenen Variable. Zusätzlich wurde die Prozedur ausgabe implementiert, die den Kopf einer Liste ausgibt, also in diesem Fall die von dem GPS-Gerät gesendete Länge und Breite. 5. Analyse des fertigen Programms Das fertige Programm empfängt die Daten, die von dem GPS-Gerät gesendet werden. Es wertet diese aus und speichert die Angaben für Länge und Breite in einer linearen Liste. Die Angaben werden dann auf dem Bildschirm ausgegeben. Das Programm besteht aus den Prozeduren datensatz, auswertung der Funktion anfang und mehreren globalen Variablen, deren Funktion und Verwendung später erklärt werden. Das Hauptprogramm beginnt mit den Einstellungen der Schnittstelle. In den Zeilen werden über die Register für die serielle Schnittstelle 2400 BPS, sowie eine Wortlänge von 8 Bit, keine Parität und ein Stopbit eingestellt. Diese Einstellungen entsprechen den Vorgaben, die das GPS-Gerät verlangt. In den darauf folgenden Zeilen werden die globalen Variablen belegt. Die lineare Liste gps wird mit NIL, die Variable richtige_daten vom Typ boolean mit false und die Integervariable zaehler wird mit 0 initialisiert. Nun beginnt eine Schleife, die abbricht, sobald der Benutzer eine Taste drückt. Genauso wie in dem Empfangsprogramm aus Kapitel 3.3 wird in den Zeilen 93/94 der COM-Port so lange überprüft, bis sich Daten im Receiver Buffer befinden. Hierzu wird in dem Register durch eine AND Verknüpfung geprüft, ob das Bit 0 gesetzt ist. Tritt der Fall ein, dass Daten vorhanden sind, wird die Variable test vom Typ byte mit dem Inhalt des Receiver Buffer belegt. Die globale Variable empfang wird schließlich mit dem zu einem character umgewandelten Inhalt von test belegt und an die Prozedur datensatz übergeben. Durch die Übergabe an eine weitere Prozedur wird vermieden, dass es zu einem Konflikt zwischen einerseits dem Empfang der Daten und andererseits der Auswertung der Daten kommt. Am Beginn (Zeilen 64-68) der Prozedur datensatz wird überprüft, ob es sich bei dem übergebenen Zeichen empfang um ein $ handelt. Ist dies der Fall, wird die Variable zaehler mit 0 und richtige_daten mit false belegt. Die Variable zaehler wird später jedes Mal erhöht, wenn der Prozedur ein Zeichen übergeben wird. Dementsprechend werden zaehler und richtige_daten auch neu 10

11 initialisiert, wenn die Prozedur 61 Zeichen empfangen hat. Bereits im vierten Kapitel wurde geklärt, dass die ersten 60 Zeichen des GPRMC-Datensatzes die Angaben für Breite und Länge enthalten. Sobald also die Prozedur erkennt, dass ein Datensatz anfängt, also ein $ empfangen wird, beginnt sie die empfangenen characters in einem array zu speichern. In den Zeilen 69 und 70 wird der array daten, der maximal 71 Zeichen enthalten kann, an der Stelle zaehler mit empfang belegt. zaehler wird dann um 1 erhöht. So werden theoretisch immer die ersten 61 Zeichen eines Datensatzes in dem array daten gespeichert. Wenn daten 7 Zeichen enthält, wird der array an die Funktion anfang übergeben. Diese Funktion überprüft in dem Datensatz, ob es sich bei dem fünften und sechsten Zeichen um ein M und ein C handelt, denn dann handelt es sich um den benötigten GPRMC Datensatz. Hierzu betrachtet die anfang die vierte und fünfte Stelle in daten (dieser array beginnt mit 0, nicht mit 1, vgl. Zeilen 19-25). Handelt es sich um den richtigen Datensatz, wird true zurückgegeben, ansonsten false. richtige_daten wird mit dem Rückgabe Wert von anfang belegt. Handelt es sich um den GPRMC-Datensatz, so übergibt die Prozedur den array, sobald er 60 Zeichen beinhaltet, an die Prozedur auswertung. Diese erhält also einen array, der die ersten 60 Zeichen des aktuellen GPRMC Datensatzes enthält. In der Prozedur auswertung wird am Anfang ein String initialisiert, der kein Zeichen enthält, zudem werden komma und zaehler, zwei Variablen vom Typ integer mit 0 belegt. Das Programm arbeitet mit mehreren Schleifen, um die Breite und Länge aus dem Datensatz heraus zu filtern. Um die Breite auszulesen, wird der array, an der Stelle 0 beginnend, durchlaufen. Für jede Stelle, an der sich ein Komma befindet, wird der Zähler komma inkrementiert. Da sich in dem genormten GPRMC-Datensatz die Breite nach dem dritten Komma und die Länge nach dem fünften Komma befindet, lassen sich so beide Angaben auslesen. Problematisch ist hierbei, dass es sich bei den Daten in dem array um characters und nicht um integers handelt. Dieses Problem wird jedoch mit dem String gelöst. Hat man die Stelle gefunden, an der die Breite beginnt, so werden die Zeichen für die Breite zu einem String addiert (vgl. Zeile 41). So erhält man die Angabe für die Breite als String. Die Prozedur val wandelt in Zeile 43 den String in einen real Wert um und belegt die Variable original der Variable breite vom Typ position damit. Genauso wird dann breite.ausrichtung mit der Himmelsrichtung belegt, die nach einem Komma direkt auf die Angabe für die Breite folgt (vgl. Zeile 44). Bei dem Auslesen der Länge 11

12 wird parallel verfahren. Am Ende der Prozedur wird für die Variablen breite und laenge vom Typ position noch die Prozedur umrechnung ausgeführt. Diese arbeitet mit den Befehlen trunc, der einen Wert vom Typ real in einen Wert vom Typ longint umformt und dabei die Stellen nach dem Komma löscht. Durch einige weitere arithmetische Umformungen erhält man so die Angaben für Grad, Minuten und die Nachkommastellen für die Minuten. Schließlich werden breite und laenge am Ende der Liste angehängt (Zeile 60). Zurück in der Prozedur datensatz wird nun der Kopf der Liste ausgegeben und schließlich der Kopf mit vorne_ab entfernt (Zeile 78/79). So liest das Programm also die Daten aus der seriellen Schnittstelle aus, analysiert die Daten und filtert die Angaben für Breite und Länge heraus. Diese werden dann in einer linearen Liste gespeichert. 6. Fazit Unser Teil des Projekts lässt sich in mehrere Phasen einteilen. Die erste Phase war die Recherche, die zweite Phase das Verständnis und die dritte Phase die eigentliche Programmierung. Der Projektleiter hat uns vor der Zusammenstellung der Gruppen davor gewarnt, dass die Gruppe für die serielle Schnittstelle die geduldigste sein müsste. Dementsprechend begannen wir, bereit für Enttäuschungen aller Art, mit der Recherche. Hier bewahrheitete sich auch die Prognose unseres Projektleiters. Die erste Phase war meiner Meinung nach die langwierigste. Da wir leider keine Bücher fanden, die Hinweise auf die Programmierung des COM-Ports geben, mussten wir uns auf das Internet verlassen. Wir fanden unglaublich viele Seiten im Internet, die kleine Hinweise auf die Lösung unseres Projekts gaben und auch komplette Lösungsvorschläge in bereits programmierten Units. Nachdem dann endlich die benötigten Informationen zur Verfügung standen, fanden wir uns überhäuft mit Daten. Leider war ich jedoch der einzige in der Gruppe, der die Informationen entsprechend verarbeiten konnte, so dass ich für die weiteren zwei Phasen verhältnismäßig auf mich allein gestellt war. Im Nachhinein ist das der größte Kritikpunkt an unserer Gruppe, der jedoch auf meinen Fehler zurückzuführen ist. Ich hätte geduldiger sein müssen und meinen Kollegen mehr Zeit geben sollen, sich das nötige Wissen anzueignen. Trotzdem ging das Projekt dann mit großen Schritten voran, endlich konnte der Programmcode aus dem Internet verstanden werden und schließlich schrieben wir unsere ersten Programme. So schrieben wir am Ende ein kleines Chatprogramm, das bidirektional über die serielle Schnittstelle Daten austauscht mit einem weiteren Rechner. So konnte man zwischen zwei über den COM-Port verbundene PCs kommunizieren. Dann mussten wir jedoch 12

13 auf das Kabel warten, das das GPS-Gerät mit dem Computer verbindet. Als schließlich das entsprechende Kabel zur Verfügung stand, ging alles sehr schnell voran. Die Daten wurden ohne Probleme empfangen. Etwas schwerer wurde dagegen die Auswertung. Das Problem wurde aber auch nach kurzer Zeit gelöst, so dass unsere Gruppe mit dem eigentlich schwereren Problem einige Zeit vor den zwei Grafikgruppen fertig wurde. Das Programm, das wir am Ende erhielten, ist jedoch nicht perfekt. Es fehlt u.a. eine Fehlererkennung bei der Datenübertragung. Meiner Meinung nach ist es jedoch zu viel von Schülern verlangt, fehlerfreie Programme zu schreiben, da u.a. nicht mal die Firma Microsoft dazu imstande ist. Kritik kann eindeutig an der Gruppendynamik geübt werden, und dementsprechend sollte sie an mir erfolgen. Da ich von Anfang an die Aufgabe des Gruppenleiters übernommen habe, hätte ich verhindern sollen, dass in der zweiten Phase des Projekts die Gruppe auseinander gebrochen ist. Trotzdem ist am Ende ein funktionierendes Programm entstanden. Die Phase, in der wir u.a. das Chat- Programm geschrieben haben, war die amüsanteste. Die Recherche dagegen hat viel Geduld gefordert, bis wir endlich mit dem Programmieren beginnen konnten. Als Schlusswort: Das Projekt hat insgesamt sehr viel Spaß gemacht, es war eine neue Erfahrung, ein bestimmtes Thema eigenständig zu erschließen und aufgrund eines neuen Wissens ein Problem zu lösen. Genauso war es für mich neu, in Pascal sowohl eine Unit als auch eine Warteschlange praktisch in einem Programm zu implementieren. Wir wurden auch unserem Ehrgeiz gerecht, da wir vor den Grafikern fertig waren. Ich hoffe, die Ergebnisse unserer Gruppe sind aus dieser Arbeit erschließbar und leicht verständlich dargestellt. 7. Erklärung der selbständigen Erarbeitung 13

14 Hiermit erkläre ich, dass ich die vorliegende Arbeit selbständig und ohne fremde Hilfe verfasst und keine anderen als die angegebenen Hilfsmittel verwendet habe. Insbesondere versichere ich, dass ich alle wörtlichen und sinngemäßen Übernahmen aus anderen Werken als solche kenntlich gemacht habe. Hürth, den 15. Februar Quellennachweis 14

15 Kumm, Werner Praxis der GPS-Navigation Delius Klasing Verlag, Bielefeld 2000, 4. aktualisierte Ausgabe Peacock, Greg Interfacing The Serial/RS-232 Port Steinberg, Frank Programmierung der seriellen und parallelen Schnittstelle unter DOS Anhang Name Adresse IRQ COM 1 3F8 4 COM 2 2F8 3 COM 3 3E8 4 COM 4 2E8 3 1.Standardadressen der COM-Ports Offset DLAB Read/Write Abk. Name = 0 Write - Transmitter Holding Buffer 0 = 0 Read - Receiver Buffer = 1 Read/Write - Divisor Latch Low Byte 1 = 0 Read/Write IER Interrupt Enable Register = 1 Read/Write - Divisor Latch High Byte 2 - Read IIR Interrupt Identification Register - Write FCR FIFO Control Register 3 - Read/Write LCR Line Control Register 4 - Read/Write MCR Modem Control Register 5 - Read LSR Line Status Register 6 - Read MSR Modem Status Register 7 - Read/Write - Scratch Register 2.Register der seriellen Schnittstelle 15

16 Geschwindigkeit (BPS) Divisor Latch High Byte Divisor Latch Low Byte 50 09h 00h h 80h h C0h h 30h h 18h h 0Ch h 06h h 03h h 02h h 01h 3.Belegung der Divisoren entsprechend der Baudrate Bit Bit 7 Bit 5 Bits 3, 4 and 5 Bit 2 Bits 0 and 1 4.Line Control Register DLAB Kommentar 1 Divisor Latch Access Bit 0 Receiver Buffer/Transmitter Buffer Set Break Enable Bit 5 Bit 4 Bit 3 Parity X X 0 No Parity Odd Parity Even Parity High Parity Low Parity Length of Stop Bit 0 1 Stop Bit 1 2 Stop Bits Bit1 Bit 0 Word Length Bits Bits Bits Bits Bit Kommentar 7 Error in received FIFO 6 Empty Data Holding Registers 5 Empty Transmitter Holding Registers 4 Break Interrupt 3 Framing Error 2 Parity Error 1 Overrun Error 0 Data Ready 16

17 5.Line Status Register Bit Kommentar 7 Carrier Detect 6 Ring Indicator 5 Data Set Ready 4 Clear to send 3 Delta Data Carrier Detect 2 Trailing Edge Ring Indicator 1 Delta Data Set Ready 0 Delta Clear to send 6. Modem Status Register 17

18 1 PROGRAM senden; 2 USES crt; 3 CONST SendeHalte = $02f8; 4 EmpfangHalte = $02f8; 5 BaudLow = $02f8; 6 BaudHigh = $02f9; 7 IntErk = $02fa; 8 LeitSt = $02fb; { LSR } 9 ModSt = $02fc; { MSR } 10 LeitStat = $02fd; { LCR } 11 ModStat = $02fe; { MCR } VAR buchstabe: CHAR; 15 BEGIN 16 clrscr; 17 PORT[LeitSt] := $80; 18 PORT[BaudLow] := $30; 19 PORT[BaudHigh] := $00; 20 PORT[LeitSt] := $03; 21 REPEAT 22 READLN(buchstabe); 23 WRITE(buchstabe); 24 PORT[SendeHalte] := ord(buchstabe); 25 UNTIL buchstabe = #27; 26 END. 7.Programm zum Senden von Daten über den COM-Port 18

19 1 PROGRAM empfangen; 2 USES crt; 3 CONST SendeHalte = $02f8; 4 EmpfangHalte = $02f8; 5 BaudLow = $02f8; 6 BaudHigh = $02f9; 7 IntErk = $02fa; 8 LeitSt = $02fb; { LSR } 9 ModSt = $02fc; { MSR } 10 LeitStat = $02fd; { LCR } 11 ModStat = $02fe; { MCR } 12 VAR test: BYTE; 13 BEGIN 14 clrscr; 15 PORT[LeitSt] := $80; 16 PORT[BaudLow] := $30; 17 PORT[BaudHigh] := $00; 18 PORT[LeitSt] := $03; 19 REPEAT 20 REPEAT test := PORT[LeitStat]; 21 UNTIL (test AND $01) = $01; 22 test := PORT[EmpfangHalte]; 23 WRITE(CHAR(test)); 24 UNTIL keypressed; 25 END. 8. Programm zum Empfangen von Daten über den COM-Port 1 19

20 1 UNIT liste; 2 INTERFACE 3 TYPE position = RECORD 4 original:real; 5 grad:longint; 6 minuten:longint; 7 sekunden:longint; 8 ausrichtung:char; 9 END; 10 zeigertyp = ^datensatz; 11 datensatz = RECORD 12 breite,laenge:position; 13 nachfolger:zeigertyp; 14 END; 15 PROCEDURE ausgabe(gps:zeigertyp); 16 PROCEDURE umrechnung(var angabe:position); 17 PROCEDURE vorne_dran(var kopf:zeigertyp; breite,laenge:position); 18 PROCEDURE hinten_dran (VAR kopf:zeigertyp; breite,laenge:position); 19 PROCEDURE vorne_ab (VAR kopf:zeigertyp); 20 IMPLEMENTATION 22 PROCEDURE ausgabe(gps:zeigertyp); 23 BEGIN 24 WRITE('Breite: '); 25 WRITE(gps^.breite.grad); 26 WRITE(' '); 27 WRITELN(gps^.breite.ausrichtung); 28 WRITE('Minuten: '); 30 WRITELN(gps^.breite.minuten); 31 WRITE('1/10000 Sekunden: '); 32 WRITELN(gps^.breite.sekunden); 33 WRITE('Laenge: '); 34 WRITE(gps^.laenge.grad); 35 WRITE(' '); 36 WRITELN(gps^.laenge.ausrichtung); 37 WRITE('Minuten: '); 38 WRITELN(gps^.laenge.minuten); 39 WRITE('1/10000 Sekunden: '); 39 WRITELN(gps^.laenge.sekunden); 40 END; 9. Unit mit den Listenprozeduren 20

21 41 PROCEDURE umrechnung(var angabe:position); 42 VAR original:real; 43 BEGIN 44 original := angabe.original; 45 angabe.grad := (trunc(original) div 100); 46 angabe.minuten := (trunc(original) mod 100); 47 angabe.sekunden := trunc(frac(original) * 10000); 48 END; 59 PROCEDURE vorne_dran(var kopf:zeigertyp; breite,laenge:position); 50 VAR help:zeigertyp; 51 BEGIN 52 IF kopf = NIL THEN 53 BEGIN 54 NEW (kopf); 55 kopf^.breite := breite; 56 kopf^.laenge := laenge; 57 kopf^.nachfolger := NIL; 58 END 59 ELSE 60 BEGIN 61 NEW (help); 62 help^.breite := breite; 63 help^.laenge := laenge; 64 help^.nachfolger := kopf; 65 kopf := help; 66 END; 67 END; 68 PROCEDURE hinten_dran (VAR kopf:zeigertyp; breite,laenge:position); 69 VAR help:zeigertyp; 70 BEGIN 71 IF kopf = NIL THEN 72 vorne_dran(kopf,breite,laenge) 73 ELSE 74 BEGIN 75 help := kopf; 76 WHILE help^.nachfolger <> NIL 77 DO help := help^.nachfolger; 78 NEW(help^.nachfolger); 79 help^.nachfolger^.breite := breite; 80 help^.nachfolger^.laenge := laenge; 81 help^.nachfolger^.nachfolger := NIL; 82 END; 83 END; 21

22 84 PROCEDURE vorne_ab (VAR kopf:zeigertyp); 85 VAR help:zeigertyp; 86 BEGIN 87 IF kopf = NIL THEN 88 WRITELN ('Keine Daten') 89 ELSE 90 BEGIN 91 IF kopf^.nachfolger = NIL THEN 92 kopf := NIL 93 ELSE 94 BEGIN 95 help := kopf^.nachfolger; 96 kopf := help; 97 END; 98 END; 99 END; END; 22

23 1 PROGRAM gpsempfang; 2 USES crt,liste; 3 CONST SendeHalte = $03f8; 4 EmpfangHalte = $03f8; 5 BaudLow = $03f8; 6 BaudHigh = $03f9; 7 IntErk = $03fa; 8 LeitSt = $03fb; 9 ModSt = $03fc; 10 LeitStat = $03fd; 11 ModStat = $03fe; 12 TYPE data = ARRAY[0..70] OF CHAR; 13 VAR test:byte; 14 empfang:char; 15 zaehler1, zaehler:integer; 16 daten:data; 17 richtige_daten:boolean; 18 gps:zeigertyp; 19 FUNCTION anfang(daten:data):boolean; 20 BEGIN 21 IF(daten[4] = 'M') AND (daten[5] = 'C') THEN 22 anfang := true 23 ELSE 24 anfang := false; 25 END; 26 PROCEDURE auswertung; 27 VAR komma, heiko, zaehler:integer; 28 wert:string; 29 breite, laenge:position; 30 BEGIN 31 wert := ''; 32 komma := 0; 33 zaehler := 0; 34 REPEAT {Auslesen der Breite} 35 inc(zaehler); 36 IF daten[zaehler] = ',' THEN 37 inc(komma); 38 UNTIL komma = 3; 39 REPEAT 40 inc(zaehler); 41 wert := wert + daten[zaehler]; 42 UNTIL daten[zaehler+1] = ','; 43 VAL(wert, breite.original, heiko); 44 breite.ausrichtung := daten[zaehler+2]; 23

24 45 komma := 0; {Auslesen der Laenge} 46 wert := ''; 47 REPEAT 48 inc(zaehler); 49 IF daten[zaehler] = ',' THEN 50 inc(komma); 51 UNTIL komma = 2; 52 REPEAT 53 inc(zaehler); 54 wert := wert + daten[zaehler]; 55 UNTIL daten[zaehler+1] = ','; 56 VAL(wert, laenge.original, heiko); 57 laenge.ausrichtung := daten[zaehler+2]; 58 umrechnung(breite); 59 umrechnung(laenge); 60 hinten_dran(gps, breite, laenge); 61 END; 62 PROCEDURE datensatz(empfang:char); 63 BEGIN 64 IF (empfang = '$') OR (zaehler = 61) THEN 65 BEGIN 66 zaehler := 0; 67 richtige_daten := false; 68 END; 69 daten[zaehler] := empfang; 70 inc(zaehler); 71 IF zaehler = 7 THEN 72 richtige_daten := anfang(daten); 73 IF richtige_daten = true THEN 74 BEGIN 75 IF zaehler = 60 THEN 76 BEGIN 77 auswertung; 78 ausgabe(gps); 79 vorne_ab(gps); 80 END; 81 END; 82 END; 24

25 83 BEGIN 84 clrscr; 85 PORT[LeitSt] := $80; 86 PORT[BaudLow] := $18; {2400 baud} 87 PORT[BaudHigh] := $00; 88 PORT[LeitSt] := $03; {8 bits, no parity, 1 stop bit} 89 gps := NIL; 90 richtige_daten := false; 91 zaehler := 0; 92 REPEAT 93 REPEAT test := PORT[LeitStat]; 94 UNTIL (test and $01) = $01; 95 test := PORT[EmpfangHalte]; 96 empfang := char(test); 97 datensatz(empfang); 98 UNTIL keypressed; 99 END. 10. Finales Programm zum Empfang und zur Auswertung der von dem GPS Gerät gesendeten Daten 25

26 program chat; uses crt; const SendeHalte = $03f8; EmpfangHalte = $03f8; BaudLow = $03f8; BaudHigh = $03f9; IntErk = $03fa; LeitSt = $03fb; ModSt = $03fc; LeitStat = $03fd; ModStat = $03fe; var test:byte; empfang:byte; send:char; begin clrscr; port[leitst] := $80; port[baudlow] := $18; port[baudhigh] := $00; port[leitst] := $03; {2400 baud} repeat test := port[leitstat]; if (test and $01) = $01 then begin empfang := port[empfanghalte]; write(char(empfang)); end; if keypressed then begin send := readkey; port[sendehalte] := ord(send); end; until send = #27; end. 11. Chatprogramm zur Nutzung des Bidirektionalen Modus des COM-Port 26

Zugriff auf die serielle Schnittstelle im Pollingbetrieb

Zugriff auf die serielle Schnittstelle im Pollingbetrieb Zugriff auf die serielle Schnittstelle im Pollingbetrieb Wie funktioniert prinzipiell die serielle Schnittstelle? Wie der Name schon andeutet, werden bei der seriellen Schnittstelle die Daten nacheinander

Mehr

2.2 Einfache Datenstrukturen

2.2 Einfache Datenstrukturen 2.2 Einfache Datenstrukturen Konstante und Variable Die Begriffe "Konstante" und "Variable" haben zunächst auch in der Informatik dieselbe grundsätzliche Bedeutung wie in der übrigen Mathematik. Variablen

Mehr

Informatik I Übung, Woche 40

Informatik I Übung, Woche 40 Giuseppe Accaputo 1. Oktober, 2015 Plan für heute 1. Nachbesprechung Übung 2 2. Vorbesprechung Übung 3 3. Zusammenfassung der für Übung 3 wichtigen Vorlesungsslides Informatik 1 (D-BAUG) Giuseppe Accaputo

Mehr

Syntax der Sprache PASCAL

Syntax der Sprache PASCAL Syntax der Sprache PASCAL Buchstaben A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ziffern 0 1 2 3 4 5 6 7 8 9 Sonderzeichen und Wortsymbole +

Mehr

15 Der strukturierte Datentyp»set«(Mengen)

15 Der strukturierte Datentyp»set«(Mengen) Dr. K. Haller Turbo-Pascal Kap. 15: Mengen (Sets) 15-1 15 Der strukturierte Datentyp»set«(Mengen) Gliederung 15.1 Allgemeines zu Mengen...2 15.2 Mengen-Operatoren, Demo-Programm...3 15.3 Mengen-Prozeduren,

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

10 Wiederholungsanweisungen

10 Wiederholungsanweisungen Dr. K. Haller Turbo-Pascal Kap. 10: Wiederholungsanweisungen 10.1 10 Wiederholungsanweisungen /until-schleifen while-schleifen for-schleifen Break und Continue Gliederung 10.1 Die /until-schleife...2 10.2

Mehr

Datentypen: integer, char, string, boolean

Datentypen: integer, char, string, boolean Agenda für heute, 13. April, 2006 Der Datentyp integer Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen Zusammengesetzte if-then-else-anweisungen Var i: integer; Teilbereich der ganzen Zahlen,

Mehr

GYMNASIUM-BONNSTRAßE Hürth

GYMNASIUM-BONNSTRAßE Hürth GYMNASIUM-BONNSTRAßE Hürth Schriftliche Hausarbeit im Fach Informatik Thema: Bitmapdateien in Pascal Lehrer: Herr Holland Von Petra Wagner Stufe 13 Hürth, 15. Januar 2002 1.Einleitung Im Rahmen des Unterrichts

Mehr

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme Institut für Computational Science Prof. Dr. H. Hinterberger Praxismodul 1 Einführung in die Programmierung Erste Programme Einführung in die Programmierung 2 Institut für Computational Science, ETH Zürich,

Mehr

Informatik I Übung, Woche 41

Informatik I Übung, Woche 41 Giuseppe Accaputo 8. Oktober, 2015 Plan für heute 1. Fragen & Nachbesprechung Übung 3 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 4 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung

Mehr

Informatik I Übung, Woche 41

Informatik I Übung, Woche 41 Giuseppe Accaputo 9. Oktober, 2014 Plan für heute 1. Fragen & Nachbesprechung Übung 3 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 4 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung

Mehr

5. Übung - Kanalkodierung/Programmierung

5. Übung - Kanalkodierung/Programmierung 5. Übung - Kanalkodierung/Programmierung Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Kanalkodierung a Folgende Kodes stehen Ihnen zur Verfügung: Kode 1: 0000000 Kode

Mehr

Datenübertragung. Vorschau. Das vorliegende Kapitel umfaßt folgende Themen:

Datenübertragung. Vorschau. Das vorliegende Kapitel umfaßt folgende Themen: Kapitel 31 Datenübertragung Vorschau Das vorliegende Kapitel umfaßt folgende Themen: Einstellen der Datenübertragungsparameter am SDR Festlegung der Formate für Druck oder Datenübertragung Modem 31.10

Mehr

Informatik I Übung, Woche 40

Informatik I Übung, Woche 40 Giuseppe Accaputo 2. Oktober, 2014 Plan für heute 1. Fragen & Nachbesprechung Übung 2 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 3 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung

Mehr

Serielle Schnittstellen

Serielle Schnittstellen Serielle Schnittstellen Grundbegriffe Seriell, Parallel Synchron, Asynchron Simplex, Halbduplex, Vollduplex Baudrate, Bitrate Serielle Datenübertragung Senden von Daten Bit für Bit 1 0 1 1 Serielle Datenübertragung

Mehr

1.3 Handhabung eines Programmiersystems

1.3 Handhabung eines Programmiersystems 1.3 Handhabung eines Programmiersystems Der Turbo-Pascal-Editor Man muss nichts vom Innenleben eines Computers verstehen, um mit ihm umgehen zu können. Wir wollen ihn als "black box" verwenden, also lediglich

Mehr

Die RS232-/V.24-Schnittstelle

Die RS232-/V.24-Schnittstelle Die RS232-/V.24-Schnittstelle Das Herzstück der seriellen Schnittstelle im PC ist der serielle Baustein UART 8250 (Universal Asynchronous Receiver Transmitter). Dieser Baustein erlaubt die serielle Datenübertragung

Mehr

11. Die PC-Schnittstelle

11. Die PC-Schnittstelle PC-Schnittstelle Funktion -1. Die PC-Schnittstelle.1. Funktion Die folgenden Angaben gelten ohne Einschränkung für den PC, PC-XT, PC-AT, AT-386, AT-486 und kompatible Rechner. Sie sind nur für jene interessant,

Mehr

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: 1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address

Mehr

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt:

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt: Tasten abfragen Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt: pinmode(pinnummer, OUTPUT) digitalwrite(pinnummer, HIGH) oder digitalwrite(pinnummer, LOW) Zum Abfragen

Mehr

Beispiel. Echo-Anwendung. Beispiel Echo Anforderungen. Benutzer stellt Konfiguration der seriellen Schnittstelle am PC ein (z.b. über Hyperterminal)

Beispiel. Echo-Anwendung. Beispiel Echo Anforderungen. Benutzer stellt Konfiguration der seriellen Schnittstelle am PC ein (z.b. über Hyperterminal) Beispiel Echo-Anwendung Erweiterung String-Ausgabe Beispiel Echo Anforderungen Benutzer stellt Konfiguration der seriellen Schnittstelle am PC ein (z.b. über Hyperterminal) - asynchroner Modus - Baudrate:

Mehr

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; unit sudoku; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TCvD_Sudoku = class(tform) Panel1: TPanel; Bevel1: TBevel; Bevel2:

Mehr

Kurs 1575, Klausur vom , Musterlösung

Kurs 1575, Klausur vom , Musterlösung Aufgabe 1: Schleife, Fallunterscheidung (CASE) Schreiben Sie ein Programm, das eine positive ganze Zahl (im Gültigkeitsbereich von integer) einliest und ihre Ziffern in umgekehrter Reihenfolge als Text

Mehr

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Nachklausur am 1 Aufgabe 1 Analysiert man das Verfahren anhand des angegebenen Beispiels, ist schnell zu erkennen, dass das erste Element von infeld2 nach outfeld an Index 2 kopiert wird, das zweite den Index 4 bekommt,

Mehr

USB > I2C- Bus Modul. Startet den I2C-Bus. Daten einlesen NACK senden

USB > I2C- Bus Modul. Startet den I2C-Bus. Daten einlesen NACK senden USB > I2C- Bus Modul Info Das USB > I2C-Bus Modul stellt eine Verbindung zwischen einen PC und dem I2C-Bus her. Über ein Terminal Programm können nun Daten zum I2C-Bus gesendet und vom I2C-Bus empfangen

Mehr

Um mit dem Computer über ein Programm in Kontakt treten zu können braucht man sogenannte Ein- und Ausgabebefehle.

Um mit dem Computer über ein Programm in Kontakt treten zu können braucht man sogenannte Ein- und Ausgabebefehle. TURBO-PASCAL Programmaufbau Jedes Pascal-Programm hat eine ganz bestimmte Struktur. Außerdem hat jeder Teil des Programms eine ähnliche Struktur. Man teilt ein Pascal-Programm in drei Abschnitte ein: 1.

Mehr

Kapitel. Platzhalter. Was sind Platzhalter?

Kapitel. Platzhalter. Was sind Platzhalter? Kapitel 3 Was sind? sind ganz wichtige Elemente bei der Programmierung. Alle Programme, die du schon kennst (wie beispielsweise die Textverarbeitung WORD oder ein Programm zum Verschicken von E-Mails),

Mehr

TURBO PASCAL VERSION 5.5

TURBO PASCAL VERSION 5.5 Jörg Lange TURBO PASCAL VERSION 5.5 / Hüthig Buch Verlag Heidelberg 7 Inhaltsverzeichnis 1. DasTURBO-Pascal-System 13 1.1 Starten des TURBO-Pascal-Systems 13 1.2 DasTURBO-Pascal-Menue-System 17 1.3 DasF)ILE-Menue

Mehr

So funktionieren Computer

So funktionieren Computer So funktionieren Computer Ein visueller Streifzug durch den Computer & alles, was dazu gehört Ron White Illustrationen: Timothy Edward Downs und Sarah Ishida Alcantara Übersetzung aus dem Amerikanischen:

Mehr

16 Der strukturierte Datentyp "record"

16 Der strukturierte Datentyp record Dr. K. Haller Turbo-Pascal Kap. 16: Records 16-1 16 Der strukturierte Datentyp "record" Gliederung 16.1 Kurze Wiederholung zu Datentypen... 2 16.2 Allgemeines zum Datentyp record... 2 16.3 Demonstration

Mehr

10: Serial Communication Interface (SCI)

10: Serial Communication Interface (SCI) 10: Serial Communication Interface (SCI) Sie verstehen das RS-232 Protokoll sowie das Zusammenspiel zwischen HW und SW bei der Kommunikation über die serielle Schnittstelle. 1. Systemüberblick Vom PC aus

Mehr

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!! !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!! Erste Zeile eines PERL-Scripts: #! /usr/bin/perl Variablen in PERL: Normale Variablen beginnen mit einem $-Zeichen Array-Variablen beginnen mit

Mehr

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen. 3.8 Objekttypen und Arrays Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen. Praktische Informatik I Wolfgang Effelsberg 3. Die Programmiersprache Java 3.8-1 Primitive Datentypen

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 2: Prof. Dr. Unser erstes C-Programm int main (int argc, char *argv[]) int i; int sum = 0; for (i = 0; i

Mehr

1. Allgemeine Datei (Binärdatei mit formatierten Inhalt)

1. Allgemeine Datei (Binärdatei mit formatierten Inhalt) Datei ein komplexer Datentyp, der primär zur dauerhaften (persistenten) Speicherung von Daten auf einen externen Datenträger dient die wichtigsten Operationen, die mit Dateien durchgeführt werden, sind

Mehr

Arduino Kurs Das LC-Display. Stephan Laage-Witt FES Lörrach

Arduino Kurs Das LC-Display. Stephan Laage-Witt FES Lörrach Arduino Kurs Das LC-Display Stephan Laage-Witt FES Lörrach - 2018 Themen LC-Display zur Anzeige von Text Serieller Datenbus Ausgabe von Zeichen, Texten und Zahlen FES Lörrach Juli 2017 2 LC-Display zur

Mehr

Mikrocomputertechnik

Mikrocomputertechnik Mikrocomputertechnik Bernd-Dieter Schaaf Mit Mikrocontrollern der Familie 8051 ISBN 3-446-40017-6 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40017-6 sowie im Buchhandel

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 5. Vorlesung 06.11.2018 1 Zahlendarstellungen 2 Speicherinhalte: Bits Hardware Spannung Ladung Magnetisierung Codierung 0V ungeladen unmagnetisiert 0 5V geladen magnetisiert

Mehr

Die serielle Schnittstelle mit den Atmega32: USART

Die serielle Schnittstelle mit den Atmega32: USART Die serielle Schnittstelle mit den Atmega32: USART Die Schnittstelle hat die Bezeichnung USART, die für UNIVERSAL SYNCHRONOUS and ASYNCHRONOUS RECEIVER and TRANSMITTER steht. In dieser Abhandlung wird

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

if ( Logischer Operator ) { } else { Anweisungen false

if ( Logischer Operator ) { } else { Anweisungen false if ( Logischer Operator ) { Anweisungen true else { Anweisungen false Bedingte Anweisungen Operatoren verknüpfen Variable zu neuen Ausdrücken, wir unterscheiden Arithmetische Operatoren Berechnung von

Mehr

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert

Mehr

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke Informatik I: Einführung in die Programmierung 3. Werte,, n und Albert-Ludwigs-Universität Freiburg Peter Thiemann 30. Oktober 2018 1 30. Oktober 2018 P. Thiemann Info I 3 / 39 Bits Der Computer repräsentiert

Mehr

2.1 Fundamentale Typen

2.1 Fundamentale Typen 2. Elementare Typen 2.1 Fundamentale Typen C++ stellt die wichtigsten Datentypen mit passender Form der Abspeicherung und zugehörigen Rechenoperationen zur Verfügung : Boolscher Datentyp (bool) für logische

Mehr

4.Grundsätzliche Programmentwicklungsmethoden

4.Grundsätzliche Programmentwicklungsmethoden 4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden

Mehr

41.2 LUA Grundlagen - Funktionen

41.2 LUA Grundlagen - Funktionen 41.2 LUA Grundlagen - Funktionen Autor: Goetz Quelle: Mein EEP-Forum Im Grunde genommen sind Funktionen - Programmierer schauen jetzt bitte mal weg! - auch Variablen. Jedenfalls gibt es da einige Gemeinsamkeiten.

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

1. Allgemein Technische Daten... 2

1. Allgemein Technische Daten... 2 Inhalt 1. Allgemein... 2 2. Technische Daten... 2 3. Beschreibung der s... 3 3.1. Allgemein... 3 3.2. Aufbau einer Übertragung... 3 3.2.1. Nur Daten... 3 3.2.2. s und Daten:... 3 3.2.3. s und Daten gemischt:...

Mehr

6. Zeiger Allgemeines Definition eines Zeigers

6. Zeiger Allgemeines Definition eines Zeigers 6. Zeiger www.c-programme.de Stefan Thiemert Kapitel 6 - Seite 1 von 6 6. 1. Allgemeines Zeiger spielen in der Programmierung eine wichtige Rolle. Sie sind wichtig, bei der Arbeit mit Arrays und Funktionen.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,

Mehr

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

7. Die serielle Schnittstelle 7.1 Asynchrone Signalform

7. Die serielle Schnittstelle 7.1 Asynchrone Signalform 7. Die serielle Schnittstelle 7.1 Asynchrone Signalform Beginn einer Zeichenübertragung zu einem beliebigen asynchronen Zeitpunkt: Ähnliche Technik wie beim Tastaturanschluß: - Datenraten von 300 Bit/sec

Mehr

1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language)

1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language) 4. Zur Struktur der PS PASCAL 4.1. Einleitende Bemerkungen 1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language) Anfang 60er (USA) COBOL (Commercial Business

Mehr

qfix ASCII-Protokoll

qfix ASCII-Protokoll www.qfix.de qfix ASCII-Protokoll Referenz qfix Dokument Nr. D100502R1 Inhaltsverzeichnis 1 Einleitung 3 1.1 Referenz................................... 3 2 qfix ASCII Protokoll 4 2.1 Verbindung und Zeichensatz.........................

Mehr

Parität: - gerade, ungerade, keine, eins, null, - even, odd, none, one, zero. -

Parität: - gerade, ungerade, keine, eins, null, - even, odd, none, one, zero. - 7. Die serielle Schnittstelle 7.1 Asynchrone Signalform Beginn einer Zeichenübertragung zu einem beliebigen asynchronen Zeitpunkt: Ähnliche Technik wie beim Tastaturanschluß: - Datenraten von 300 Bit/sec

Mehr

TCP/IP ASCII Schnittstelle Programmierhandbuch

TCP/IP ASCII Schnittstelle Programmierhandbuch TCP/IP ASCII Schnittstelle Programmierhandbuch Version 3.0 1. Einleitung Das IRTrans ASCII Format dient der Ansteuerung von IRTrans Modulen (über den irserver oder Ethernetmodule mit IRDB bzw. LAN Controller

Mehr

Grundlagen wissenschaftlichen Arbeitens (ws /05)

Grundlagen wissenschaftlichen Arbeitens (ws /05) Grundlagen wissenschaftlichen Arbeitens (ws.. 2004/05) Thema: The programming language PASCAL Autor: Ratko Trajanovski 1 kurzfassung Zur Sprache PASCAL Pascal in der Ausbildung Lexikalische Elemente Programmaufbau

Mehr

Parität: - gerade, ungerade, keine, eins, null, - even, odd, none, one, zero. -

Parität: - gerade, ungerade, keine, eins, null, - even, odd, none, one, zero. - 7. Die serielle Schnittstelle 7.1 Asynchrone Signalform Beginn einer Zeichenübertragung zu einem beliebigen asynchronen Zeitpunkt: Ähnliche Technik wie beim Tastaturanschluß: - Datenraten von 300 Bit/sec

Mehr

SB 500 Softwarekonfiguration und Einstellung der Jumper

SB 500 Softwarekonfiguration und Einstellung der Jumper SB 500 Softwarekonfiguration und Einstellung der Jumper Version 1.6 TCC GmbH März 2001 Inhaltsverzeichnis Überblick...1 Öffnender Box...2 Position der Jumper auf der Platine...2 Einstellung der RD Leitung...3

Mehr

Schleifenprogrammierung in C/C++, Fortran und Pascal

Schleifenprogrammierung in C/C++, Fortran und Pascal Schleifenprogrammierung in C/C++, Fortran und Pascal Stefan Ackermann Mathematisches Institut der Universität Leipzig 8. April 2009 1 Die kopfgesteuerte Schleife Bei der kopfgesteuerten Schleife steht

Mehr

Interrupts im Handbuch des ATmega128 gründlich lesen.

Interrupts im Handbuch des ATmega128 gründlich lesen. 1 Versuch 1 1.1 Ziel Ziel des ersten Versuchs ist es die USART-Schnittstelle kennenzulernen, sowie Assemblerprogramme um eine interaktive Eingabe zu erweitern. Zu diesem Zweck werden vom Praktikums-PC

Mehr

Die RS Schnittstelle

Die RS Schnittstelle Die RS232 -. Schnittstelle Referat in der Vorlesung Rechnerstrukturen C.Wehland ; A.Gerst Inhalt Überblick serielle PC-Schnittstelle Übertragungsparameter Signale der seriellen Schnittstelle Register der

Mehr

Programmiermanual MINILOG. Programmbeispiele. Ansteuerung über RS 232 Schnittstelle (GW-BASIC)

Programmiermanual MINILOG. Programmbeispiele. Ansteuerung über RS 232 Schnittstelle (GW-BASIC) Ansteuerung über RS 232 Schnittstelle (GW-BASIC) 10 OPEN COM1:9600,N,8;1,RS,CS0,DS0,ASC,LF AS#1 Schnttstelleninitialisierung : COM1 = Schnittstelle, 9600 = Baudrate, N = Parität, 8 = Bit pro Charakter,

Mehr

Fachbericht DPR. Name: René Wagener. Klasse: CI3O1. Fachlehrer: Herr Balog

Fachbericht DPR. Name: René Wagener. Klasse: CI3O1. Fachlehrer: Herr Balog Fachbericht DPR Name: René Wagener Klasse: CI3O1 Fachlehrer: Herr Balog Inhalt Der Anfang... 3 Was ist Delphi?... 3 Das erste Programm... 3 Delphi VCL-Formularanwendung... 4 Variablen... 5 Beispiel für

Mehr

Bit Operationen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Bit Operationen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert Bit Operationen InE M. Thaler, tham@zhaw.ch Office TG28 http://www.zhaw.ch/~tham November 8 Um was geht es? Microcontroller z.b. Ansteuerung/Konfiguartion von I/O Registern oft notwendig: einzelne Bits

Mehr

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement

Mehr

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen. C++ Teil 3 3.3 Schleifen Man kann bestimme en in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen. for-schleife for-schleife while-schleife do-while-schleife for ( Ausdruck1;

Mehr

Elexis - ABX Micros Connector

Elexis - ABX Micros Connector Elexis - ABX Micros Connector MEDELEXIS AG 26. Oktober 2012 1 1 Einführung Dieses Plugin dient dazu, die Laborgeräte 1 ABX Micros CRP, ABX Micros 60, ABX Micros 60 CRP und ABX Micros CRP 200 an Elexis

Mehr

Android-Apps Gegenüberstellung Delphi java

Android-Apps Gegenüberstellung Delphi java Android-Apps Gegenüberstellung 2/9 Grundsätzliches etc. Groß-/Kleinschreibung egal sensitiv! Zuweisung := = Kommentare // // { } /* */ Zeichenkettenbegrenzer: 'text' "text" Inkrementieren / Dekrementieren

Mehr

Informatik I Übung, Woche 38

Informatik I Übung, Woche 38 Giuseppe Accaputo 18. September, 2014 Plan für heute 1. Wer bin ich 2. Allgemeines 3. Zusammenfassung der bisherigen Vorlesungsslides 4. Kurze Vorbesprechung zur Übung 1 Informatik 1 (D-BAUG) Giuseppe

Mehr

Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:

Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration: Boolean Wertemenge: Wahrheitswerte {,}, auch {,} Deklaration: VAR present,billig,laut,gefunden : BOOLEAN; Ein-/Ausgabe: keine! Operatoren: Negation, Verneinung NOT ~ Konjunktion, logisches UND AND & Disjunktion,

Mehr

DFÜ-Skript-Befehlssprache Zur Unterstützung bei der Skripterstellung für das DFÜ-Netzwerk

DFÜ-Skript-Befehlssprache Zur Unterstützung bei der Skripterstellung für das DFÜ-Netzwerk DFÜ-Skript-Befehlssprache Zur Unterstützung bei der Skripterstellung für das DFÜ-Netzwerk Inhaltsverzeichnis 1.0 Übersicht 2.0 Grundstruktur eines Skripts 3.0 Variablen 3.1 Systemvariablen 4.0 Zeichenfolgenliterale

Mehr

Die elektronische Punktekreditkarte

Die elektronische Punktekreditkarte Die elektronische Punktekreditkarte Projektarbeit II im Grundkurs Informatik 12/2 Am Gymnasium Friedrich Schiller, Bleicherode Name: Patrique Fiedler Kursleiter: Herr Gassmann Stammkurs: 12 M2 Schuljahr:

Mehr

Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { Programm sortiert das Eingabefeld iofeld aufsteigend var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1;

Mehr

Elexis - ABX Micros Connector

Elexis - ABX Micros Connector Elexis - ABX Micros Connector MEDELEXIS AG 28. Mai 2010 1 1 Einführung Dieses Plugin dient dazu, die Laborgeräte 1 ABX Micros CRP, ABX Micros 60 und ABX Micros CRP 200 an Elexis anzubinden. Mit diesem

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

Mehr

Kurs 1613 Einführung in die imperative Programmierung Lösungen der Aufgaben zum Studientag

Kurs 1613 Einführung in die imperative Programmierung Lösungen der Aufgaben zum Studientag Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { Programm sortiert das Eingabefeld iofeld aufsteigend var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1;

Mehr

Einführung in die Programmierung mit VBA

Einführung in die Programmierung mit VBA Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen

Mehr

MODBUS RTU Übertragungsprotokoll für Digitale Elektronische Vorschaltgeräte mit RS-485 Schnittstelle

MODBUS RTU Übertragungsprotokoll für Digitale Elektronische Vorschaltgeräte mit RS-485 Schnittstelle MODBUS RTU Übertragungsprotokoll für Digitale Elektronische Vorschaltgeräte mit RS-485 Schnittstelle Die Digitalen Elektronischen Vorschaltgeräte von LT-Elektronik Gera GmbH unterstützen die serielle Datenübertragung

Mehr

Displaysteuerung: ATmega32u4. HTL St.Pölten. EL Autor: Kuran. Displaysteuerung Fachspezifische Softwaretechnik 2

Displaysteuerung: ATmega32u4. HTL St.Pölten. EL Autor: Kuran. Displaysteuerung Fachspezifische Softwaretechnik 2 isplaysteuerung Fachspezifische Softwaretechnik 2 Skriptum 208 HTL St.ölten Elektronik und Technische Informatik EL Autor: Kuran isplaysteuerung: Für einen µc des Typs ATmega32u4, an dem ein isplay (Hitachi

Mehr

Microcomputertechnik

Microcomputertechnik Microcomputertechnik mit Mikrocontrollern der Familie 8051 Bearbeitet von Bernd-Dieter Schaaf 2. Auflage 2002. Buch. 230 S. Hardcover ISBN 978 3 446 22089 8 Format (B x L): 16 x 22,7 cm Gewicht: 407 g

Mehr

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss Arrays FTI 41 2005-09-09 Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss z.b. Dim Werte(x) As Single. Wobei

Mehr

Datentechnik. Prinzipieller Aufbau eines Schnittstellenbausteins

Datentechnik. Prinzipieller Aufbau eines Schnittstellenbausteins Prinzipieller Aufbau eines Schnittstellenbausteins DB /CS A0-Ai R/W Reset Takt Int IntAck zum µp Datenbus Puffer Steuerung Interruptsteuerung & IF Statusregister IE Steuerregister Befehlsregister Datenregister

Mehr

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays Objekttypen Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays Primitive- und Objekt-Datentypen Primitive Datentypen benötigen einen vorher genau

Mehr

Lösungsvorschläge zur Übungsklausur. zum Kurs 1708 Technische Informatik II. im WS 01/02

Lösungsvorschläge zur Übungsklausur. zum Kurs 1708 Technische Informatik II. im WS 01/02 Lösungsvorschläge zur Übungsklausur zum Kurs 1708 Technische Informatik II im WS 01/02 Aufgabe 1: (10 Punkte) Welche der folgenden Aussagen sind richtig? a) Unter dem Begriff Mikroprogramm versteht man

Mehr

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang.   WS 07/08 Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende

Mehr

GSOFT2000 I Windows-Software für das Präzisionsthermometer GMH2000

GSOFT2000 I Windows-Software für das Präzisionsthermometer GMH2000 GSOFT2000 I Windows-Software für das Präzisionsthermometer GMH2000 1. Einführung: In Verbindung mit einem PC, einem GMH2000,einem Schnittstellenadapter GRS232 und der Software GSOFT2000 I läßt sich ein

Mehr

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2 Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen

Mehr

serielles 8-Digit LED Display PL0061

serielles 8-Digit LED Display PL0061 Seite 1 von 9 Inhaltsverzeichnis 1. Einleitung... 1 2. Eigenschaften... 2 2.1 Grundlegende Eigenschaften... 2 3. Die RS232-Schnittstelle... 2 3.1 Hardware-Voraussetzungen... 2 3.2 Die USB-to-Serial-Bridge...

Mehr

Kontrollstrukturen -- Schleifen und Wiederholungen

Kontrollstrukturen -- Schleifen und Wiederholungen Kontrollstrukturen -- Schleifen und Wiederholungen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

SRG 2,3,4,5,6 Steuerung V1.2

SRG 2,3,4,5,6 Steuerung V1.2 SRG 2,3,4,5,6 Steuerung V1.2 IBT- GmbH&Co KG Rosenweg 22 87767 Niederrieden 0 83 35 / 91 16 TPC4\ Stand: 09.01.2006 Seite 1 von 7 Inhaltsverzeichnis 1 Allgemeines... 3 1.1 Programme im SRG-3,4,5... 3 1.2

Mehr