#!/bin/bash # # simples Beispiel Script zur Verwendung von serialdbus über die bash # # # Vorrausssetzungen: # - es existiert die serielle Schnittstelle /dev/ttyUSB1 # - TXD ist mit RXD verbunden # - das Programm "qdbus" ist installiert # # #include the main functions . dbusserial.sh SER=serial1 # der Name für die serialdbus instanz (frei wählbar!) # über diesen Namen wird später auf die Schnittstelle zugeriffen # initialisierung der Schnittstelle serial_init /dev/ttyUSB1 $SER 19200 8 none 1 none if [[ $? -ne 0 ]]; then # Ein Fehler ist bei der Initialisierung aufgetreten echo "ERROR: could not open /dev/ttyUSB1 as '$SER' for serial communication" exit 1 # Script abbrechen fi # von jetzt an kann über "serial_send" gelesen und über "serial_receive" geschrieben werden # wenn TxD mit RxD verbunden ist wird das was gesendet wird auch wieder empfangen serial_send $SER "Diese Daten " serial_send $SER "werden gesendet" # wir holen die Empfangen Daten ab serial_receive $SER # in $SERIALRECV steht jetzt der empfangene String echo "Empfangen wurde:" echo -en "$SERIALRECV" # gibt "Diese Daten werden gesendet" aus echo " " # Die gesendeten Daten enhalten KEINE Steuerzeichen! Und auch ein abschlie0endes # "\n" wird nicht automatisch an den String angehangen! # Wenn Steuerzeichen übertragen werden sollen kann dies folgendermaßen # erreicht werden # String erstellen SEND_DATA=$(echo -en "Test mit einem\nZeilenumbruch.") # Daten Senden. $SEND_DATA muss in " ", damit es als ein Argument übergeben wird! serial_send $SER "$SEND_DATA" # wir holen die Empfangen Daten ab serial_receive $SER # in $SERIALRECV steht jetzt der empfangene String echo "Empfangen wurde:" echo -en "$SERIALRECV" # gibt "Test mit einem echo " " # "Zeilenumbruch." aus # Auch folgendes ist möglich serial_send $SER "0x41 (A) in HEX angegeben = \x41\n" serial_receive $SER echo "Empfangen wurde:" echo -en "$SERIALRECV" # gibt "0x41 (A) in HEX angegeben = A" aus echo " " # zum schluss muss die Schnittstelle wieder geschlossen werden serial_deinit $SER