#!/bin/bash # # bash Script das in andere Scripte eingebunden werden kann um Daten über # eine serielle Schnittstelle zu senden. # export SERIALDBUS="../build/./serialdbus" function serial_init() { local device; local baudrate; local dbusname; local stopbits; local databits; local flowcontrol; local parity; local serial_export; local interface; local grepret; if [[ -z "$1" ]]; then device="/dev/ttyS0" else device="$1" fi if [[ -z "$2" ]]; then dbusname="Ser0" else dbusname="$2" fi if [[ -z "$3" ]]; then baudrate=19200 else baudrate="$3" fi if [[ -z "$4" ]]; then databits=8 else databits="$4" fi if [[ -z "$5" ]]; then flowcontrol="none" else flowcontrol="$5" fi if [[ -z "$6" ]]; then stopbits=1 else stopbits="$6" fi if [[ -z "$7" ]]; then parity="none" else parity="$7" fi # Alle Werte wurden auf Standart oder den übergebenen Wert gesetzt # Instanz von serialdbus starten und alle Ausgaben des Programs # nach /dev/null schicken $SERIALDBUS "$device" "$dbusname" -b "$baudrate" -d "$databits" -f "$flowcontrol" -s "$stopbits" -p "$parity" >/dev/null 2>&1 & sleep 2 #etwas warten damit die schnittstelle initialisert werden kann # gibt alle funktionen innerhalb von serialdbus wieder interface=$(qdbus org.schmufu.serialdbus) grepret=$(echo "${interface}" | egrep "${dbusname}") # der übergebene dbusname muss als dbus service vorhanden sein if [[ -z "${grepret}" ]]; then #dbus service konnte nicht erstellt werden echo "ERROR at ${FUNCNAME}: cant create the serialdbus service for $dbusname" return 1 fi return 0; } # Beendet die genutzte serielle Schnittstelle function serial_deinit() { if [[ -z "$1" ]]; then echo "PROGRAMMING ERROR at ${FUNCNAME}: supply a DBUSNAME at \$1" return 1 fi qdbus org.schmufu.serialdbus /${1} org.schmufu.serialdbus.quit return 0 } # Sendet über die in $1 definierte Schnittstelle, den in $2 übergebenen String function serial_send() { local ret; local str; ret=1; if [[ -z "$1" ]]; then echo -en "PROGRAMMING ERROR at ${FUNCNAME} - supply a dbusname at \$1!\n" return 1 fi if [[ -z "$2" ]]; then echo -en "PROGRAMMING ERROR at ${FUNCNAME} - supply a text to sent at \$2!\n" return 1 fi str=$(qdbus org.schmufu.serialdbus /${1} org.schmufu.serialdbus.apply "$2") if [[ "x${str}" != "xtrue" ]]; then ret=1 else ret=0 fi return $ret } # Setzt die globale Variable $SERIALRECV auf den Empfangenen String function serial_receive() { local str; if [[ -z "$1" ]]; then echo -en "PROGRAMMING ERROR at ${FUNCNAME} - supply a dbusname at \$1!\n" return 1; fi str=""; str=$(qdbus org.schmufu.serialdbus /${1} org.schmufu.serialdbus.receive) SERIALRECV="${str}"; }