i

Serielle Schnittstelle

Was sind Hardware-Schnittstellen?

Hardware-Schnittstellen werden benötigt, damit Rechner mit der Außenwelt Daten austauschen können. Solche Schnittstellen werden beispielsweise benutzt, um Daten von Tastatur und Maus zu übernehmen oder Daten an Bildschirm, Drucker und Lautsprecher weiterzugeben. Sicher hast du auch schon die USB-Schnittstelle benutzt, um Daten von bzw. an externe Datenträger zu übertragen.

Hardware-Schnittstellen begegnen uns in Form von Buchsen und Steckern, mit deren Hilfe die Verbindung zum Innern eines Rechners hergestellt werden.

Schnittstellen
Quelle: Wikimedia Commons

Hardware-Schnittstellen umfassen aber mehr als nur diese Buchsen und Stecker:

Eine Schnittstelle zur Hardware ist eine Hardwareeinheit (bestehend aus Leitungen und elektronischen Bauteilen), über die der Datenaustausch in die zentrale Verarbeitungseinheit eines Rechners erfolgt. Aufbau und Verhalten dieser Hardwareeinheit müssen in einer Schnittstellenbeschreibung genau festgelegt sein.

Schnittstellen werden auch benötigt, um Kommunikationsvorgänge mit und zwischen Rechnern zu realisieren. Wir werden im Folgenden hierzu die serielle Schnittstelle benutzen.

Serielle Schnittstelle

Bei einer seriellen Schnittstelle werden die Daten bitweise (d.h. Bit für Bit nacheinander) übertragen.

Die folgende Abbildung zeigt einen Stecker für eine serielle Schnittstelle.

Serielle Schnittstelle

Zu erkennen sind etliche Leitungen, die für verschiedenste Zwecke für den Datentransport zur Verfügung stehen.

Wir werden im Folgenden nur die sogenannten Handshake-Leitungen RTS und CTS für den Datentransport benutzen. Über die RTS-Leitung können Daten vom Rechner in die Außenwelt übertragen werden. Über die CTS-Leitung können Daten von der Außenwelt an den Rechner übergeben werden.

Die Datenbits werden dabei durch Spannungen zwischen der RTS- bzw. CTS-Leitung und der GND-Leitung repräsentiert: Die 0 wird dabei durch eine negative Spannung gegenüber der Masse-Leitung GND (etwa -12V), die 1 durch eine positive Spannung gegenüber der Masse-Leitung GND (etwa +12V) dargestellt.

Aufgabe 1

Die serielle Schnittstelle wurde hier gewählt, da sie technisch robust ist und softwareseitig leicht angesprochen werden kann. Daneben besitzt ein Computer noch einige andere Schnittstellen. Nenne einige Schnittstellen und zähle Nutzungsbeispiele der Schnittstellen auf.

Voraussetzungen für die Experimente

Die folgenden Experimente kannst du nur durchführen, ...

  • ... wenn dein Rechner eine serielle Schnittstelle hat (oder du eine Zusatzkarte oder einen geeigneten Adapter benutzt),
  • ... wenn du das unten beschriebene Anzeigegerät benutzt (oder auf andere Weise die Spannungen anzeigst),
  • ... wenn du das Python-Modul pySerial installiert hast (s.u.).

Unser Anzeigegerät

Für unsere Experimente benutzen wir ein selbst gebautes Anzeigegerät, das direkt (oder über ein Verbindungskabel) auf den Schnittstellenstecker aufgesteckt wird.

Anzeige mit LED

Die LED ist hier so eingebaut, dass sie nur dann leuchtet, wenn die RTS-Leitung eine positive Spannung gegenüber der Masse-Leitung aufweist, d.h., wenn eine 1 gesendet wird.

Eine Anleitung zum Bau eines solchen Anzeigegeräts findest du hier.

Ein Python-Zusatzmodul

Die folgenden Experimente benutzen das Python-Modul pySerial.py. Dieses Modul ist kein Bestandteil einer Standardversion von Python und muss daher zusätzlich installiert werden. Wie das geht, findest du hier.

Ein Dialog mit der seriellen Schnittstelle

Zuerst musst du herausfinden, welchen Portbezeichner die benutzte serielle Schnittstelle hat. Folgendes Programm zeigt dir die Bezeichner der seriellen Schnittstellen deines Computers an: list_serial_ports.py

Im Folgenden gehen wir davon aus, dass die serielle Schnittstelle den Portbezeichner 'com1' hat (bzw. die Portnummer 0 hat). Wenn die von dir benutzte serielle Schnittstelle einen anderen Portbezeichner hat, musst Du den folgenden Dialog dann entsprechend abändern.

Die serielle Schnittstelle kann jetzt im Dialog-Modus direkt angesprochen werden.

>>> from serial import Serial   # die Klasse Serial des Moduls serial wird importiert
>>> s = Serial('com1')          # ein Objekt s der Klasse Serial wird erzeugt und öffnet Port COM1
>>> s.getCTS()                  # CTS wird abgefragt 
True
>>> s.setRTS(0)                 # RTS wird auf Pegel 0 (bzw. Low) gesetzt
>>> s.getCTS()                  # CTS wird abgefragt 
False
...
>>> s.close()                   # die Schnittstelle wird geschlossen

Aufgabe 2

Führe selbst diese Versuche aus und beobachte die LED.

Zeitliche Abfolge von Signalen

Außer dem Pegel an sich muss auch dessen Dauer kontrolliert werden können. Dazu nutzen wir die Funktion sleep aus dem Modul time. Die Benutzung demonstriert das folgende Python-Programm:

from time import sleep

print("Hallo")
sleep(3)
print("wie")
sleep(3)
print("geht's?")

Aufgabe 3

Schreibe ein Programm, das die LED zum blinken bringt.

Suche

v
10.2.1.1
dev.inf-schule.de/rechnernetze/bituebertragung_sicherung/bituebertragung_seriell/serielleschnittstelle
dev.inf-schule.de/10.2.1.1
dev.inf-schule.de/@/page/lKRmuETlWmj1HxWF

Rückmeldung geben