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:
- $baud
- INPUT
- INPUTBIN
- INPUTHEX
- OPEN
- CLOSE
- INKEY
- WAITKEY
- ISCHARWAITING
- CONFIG SERIALIN
- CONFIG SERIALOUT
- ECHO
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
