RS-232 (Asynchrone serielle Schnittstelle)

D-SUB-Verbinder (aus Wikipedia)

Der Begriff EIA-232, ursprünglich RS-232, bezeichnet einen Standard für eine serielle Schnittstelle, die in den frühen 1960ern von einem US-amerikanischen Standardisierungskomitee (heute EIA – Electronic Industries Alliance) eingeführt wurde. (Aus Wikipedia: http://de.wikipedia.org/wiki/Rs232)

Guter Überblick über "RS-232, I²C und SPI":
http://www.lemps.ch/doku/schnittstellen.pdf (http://www.lemps.ch/)
kreatives-chaos.com - über Mikrocontroller und ihre Schnittstellen:
http://www.kreatives-chaos.com/artikel/ueber-mikrocontroller-und-ihre-schnittstellen
RS232C, RS422, RS485 - Prof. Jürgen Plate:
http://www.netzmafia.de/skripten/hardware/rp1/rp11.html
Wikipedia-Artikel über RS-232:
http://de.wikipedia.org/wiki/Rs232

Man kann über RS-232 Verbindung zu anderen Systemen (Computer, Mikrocontroller,...) aufnehmen und synchron sowie asynchron Daten übermitteln und empfangen.

RS-232 Kabel sind meist mit D-Sub Stecker/Buchsen miteinander verbunden. Wie diese Stecker aussehen, sieht man am Bild an der rechten Seite.

Computer und Mikrocontroller über RS-232 verbinden:
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/max232_1zu1kabel/
Bascom - Using the UART:
http://avrhelp.mcselec.com/index.html?uart.htm
RS232 Interface - www.sprut.de:
http://www.sprut.de/electronic/interfaces/rs232/rs232.htm

Bascom

Bascom bietet eine breite Palette an Befehlen für die RS-232-Schnittstelle:

Ein einfaches Beispiel mit aktiviertem Buffer könnte so aussehen:

$regfile = "M8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
$baud = 9600

Config Serialin = Buffered , Size = 30
Enable Interrupts
Echo Off

Dim S As String * 20


Do
   Wait 2                                    'um den Buffer zu demonstieren
   Input S
   Print "Antwort: " ; S
Loop

End

INPUT nimmt einen String entgegen, der maximal so lang ist wie die Variable, in die dieser String übernommen wird. Längere Strings werden einfach abgeschnitten. Der String wird mit CR (Carriage Return) abgeschlossen. So können auch kürzere Strings übergeben werden. ECHO OFF verhindert, dass die eingegebenen Zeichen direkt auch wieder an den Sender zurück geschickt werden. Standard ist ECHO ON.

Python

Python bietet mehrere Möglichkeiten, um auf eine Serielle Schnittstelle zuzugreifen. Man kann diese unter Windows, gleich wie unter Linux, direkt über einen Filehandle ansprechen. Aber viel einfacher ist es, eine Schnittstelle wie pySerial dafür zu verwenden.

Das einfachste pySerial-Beispiel sieht so aus (unter Windows):

import serial
ser = serial.Serial("COM1") #open first serial port
ser.write("hello") #write a string
ser.close() #close port

Man kann einen Timeout für das Lesen einstellen. So bleibt man nicht hängen, wenn mal der Gegenpart nicht mehr antwortet. Der Befehl readline ist das Gegenstück zu INPUT von Bascom. Über den Parameter eol='\r' kann auf CR (Carriage Return) als Zeilenendzeichen umgestellt werden.

Nullmodemkabel

Ein Nullmodemkabel ist ein gekreuztes RS-232-Kabel. Dieses Kabel wird meistens dazu eingesetzt um Mikrocontroller über den MAX232 IC mit dem Computer zu verbinden.

Wie so ein Kabel zusammengelötet werden muss, sieht man hier: http://www.hardwarebook.info/Nullmodem_%289-9%29

ASCII-Zeichensatz

Unsichtbare ASCII-Zeichen:

000 -> NUL (Null Prompt)
001 -> SOH (Start of heading)
002 -> STX (Start of Text)
003 -> ETX (End of Text)
004 -> EOT (End of transmission)
005 -> ENQ (Enqiry)
006 -> ACK (Acknowledge)
007 -> BEL (Bell)
008 -> BS  (Backspace)
009 -> HT  (Horizontal Tab)
010 -> LF  (LineFeed)
011 -> VT  (Vertical Tab)
012 -> FF  (Form Feed)
013 -> CR  (Carriage Return)
014 -> SO  (Shift Out)
015 -> SI  (Shift In)
016 -> DLE (Data link Escape)
017 -> DC1 (X-On)
018 -> DC2 (X-On)
019 -> DC3 (X-Off)
020 -> DC4 (X-Off)
021 -> NAK (No Acknowledge)
022 -> SYN (Synchronous idle)
023 -> ETB (End transmission blocks)
024 -> CAN (Cancel)
025 -> EM  (End of Medium)
026 -> SUB (Substitute)
027 -> ESC (Escape)
028 -> FS  (File Separator)
029 -> GS  (Group Separator)
030 -> RS  (Record Seperator)
031 -> US  (Unit Seperator)
032 -> BLA (Blank)
ASCII-Zeichensatz als Textdatei:
ascii_zeichensatz.txt
ASCII-Zeichentabelle:
http://de.wikipedia.org/wiki/ASCII-Tabelle
Druckversion der ASCII-Zeichentabelle:
http://upload.wikimedia.org/wikipedia/commons/7/73/ASCII.pdf
ASCII-, ANSI- und HTML-Zeichencodes sowie deutsche Tastatur-Scancodes:
http://www.torsten-horn.de/techdocs/ascii.htm