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)
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/Control/schnittstellen.pdf
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
Bascom - Using the UART:
https://avrhelp.mcselec.com/index.html?uart.htm
RS232 Interface - www.sprut.de:
http://www.sprut.de/electronic/interfaces/rs232/rs232.htm
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 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.
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_(9-9)
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-Zeichentabelle:
https://de.wikipedia.org/wiki/ASCII-Tabelle
Druckversion der ASCII-Zeichentabelle:
https://upload.wikimedia.org/wikipedia/commons/7/73/ASCII.pdf
ASCII-, ANSI- und HTML-Zeichencodes sowie deutsche Tastatur-Scancodes:
https://www.torsten-horn.de/techdocs/ascii.htm
Ich programmiere Progressive Web Applications, Mobile Apps, Desktop-Programme und noch vieles mehr. Falls es dich interessiert, findest du mehr Informationen darüber auf meiner Business-Website.