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 wie bei dieser Laptop-Rückseite in Form von Buchsen und Steckern, mit deren Hilfe die Verbindung zum Innern eines Rechners hergestellt werden.

Schnittstellen

Aufgabe 1

Benenne die abgebildeten Schnittstellen und zähle Nutzugsbeispiele auf. Kennst du weitere Schnittstellen?

Hardware-Schnittstellen umfassen aber mehr als nur 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.

Voraussetzungen für die Experimente in diesem Abschnitt

Für die folgenden Experimente benötigst du ...

  • ... zwei Rechner mit einer seriellen Schnittstelle oder einen geeigneten Adapter
  • ... ein Nullmodemkabel zum Verbinden zweier Rechner über die serielle Schnittstelle
  • ... ein (LED-)Anzeigegerät für den Schnittstellenstecker
  • ... das Python-Modul pySerial

Details und Anleitungen zu den benötigten Materialien findest du hier: Exkurs - Materialien zur Kommunikation über die serielle Schnittstelle

Die Serielle Schnittstelle

Die serielle Schnittstelle ist technisch robust und verständlich aufgebaut. Die folgende Abbildung zeigt einen Stecker für eine serielle Schnittstelle, bei dem man die neun zur Verfügung stehenden Leitungen gut erkennen kann.

Serielle Schnittstelle

Wir werden 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.

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

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.

Ein Dialog mit der seriellen Schnittstelle

Anzeigegerät

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
  • Wenn du einen USB-to-Serial-Adapter und Windows verwendest, kannst du dir den Portbezeichner auch unter Systemsteuerung->"Geräte und Drucker" anzeigen lassen.

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
inf-schule.de/rechnernetze/bituebertragung_sicherung/bituebertragung_seriell/serielleschnittstelle
inf-schule.de/10.2.1.1
inf-schule.de/@/page/lKRmuETlWmj1HxWF

Rückmeldung geben