Dies ist eine alte Version des Dokuments!


A PCRE internal error occured. This might be caused by a faulty plugin

====== serialdbus ====== {{ :wiki:progress:90.png?150|Fortschritt: 90% (Funktionsfähig, evt. Erweiterungen)}} Das Programm serialdbus dient der Umsetzung der seriellen Schnittstelle zum DBus-Daemon unter Linux. Mit hilfe dieser Umsetzung kann sehr simpel auf eine oder auch mehrere serielle Schnittstellen zugegriffen werden. ===== Verwendung ===== ==== Start des Programms ==== **serialdbus /dev/ttyUSB0 Ser1** dies stellt ein dbus-Interface "org.schmufu.serialdbus" mit dem Object "/Ser1" im DBus zur Verfügung. Der Zugriff hierauf kann dann z.B. über qdbus erfolgen. ==== Senden von Daten (mit qdbus) ==== **qdbus org.schmufu.serialdbus /Ser1 org.schmufu.serialdbus.apply "send data"** Sendet "send data" über die serielle Schnittstelle /dev/ttyUSB0 ==== Empfangen von Daten (mit qdbus) ==== **qdbus org.schmufu.serialdbus /Ser1 org.schmufu.serialdbus.receive** Gibt alle, seit dem letzten Aufruf, empfangene Daten zurück und löscht den internen Empfangsbuffer. ==== Beenden des Programms ==== serialdbus läuft weiterhin im Vordergrund und kann über STRG+C beendet werden. Es besteht aber auch die Möglichkeit das Programm über den dbus aufruf "qdbus org.schmufu.serialdbus /Ser1 org.schmufu.serialdbus.quit" zu beenden. (Dies funktioniert auch dann wenn das Programm durch ein nachgestelltes "&" weiter im Hintergrund ausgeführt wird). ===== Shell Script Beispiele (bash) ===== folgendes script kann in ein Script eingebunden werden und dann einfach über die zur Verfügung gestellten funktionen auf die serielle Schnittstelle zugegriffen werden. <code bash> #!/bin/bash export SERIALDBUS="/home/user/bin/serialdbus" function init_ser1() { local device; local baudrate; local dbusname; local stopbits; local databits; local flowcontrol; local parity; if [[ -z "$1" ]]; then device="/dev/ttyS0" else device="$1" fi if [[ -z "$2" ]]; then dbusname="ser0" else dbusname="$2" fi export SER1DBUSNAME="$dbusname" 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 $SERIALDBUS "$device" "$dbusname" -b "$baudrate" -d "$databits" -f "$flowcontrol" -s "$stopbits" -p "$parity" & return 0; } # Sendet den in $1 übergebenen String über die serielle Schnittstelle SER1 function serial1_send() { local ret; local str; ret=1; if [[ -z "$1" ]]; then echo -en "PROGRAMMING ERROR at ${FUNCNAME} - supply a text (\$1) to send\n" fi str=$(qdbus org.schmufu.serialdbus /${SER1DBUSNAME} org.schmufu.serialdbus.apply "$1") if [[ "x${str}" != "true" ]]; then ret=1 else ret=0 fi return $ret } # Setzt die globale Variable $MEAS auf den Empfangenen String function serial1_recv() { local str; str=""; str=$(qdbus org.schmufu.serialdbus /${SER1DBUSNAME} org.schmufu.serialdbus.receive) MEAS="${str}"; } </code> ====== Weiterführende Links ====== * [[http://schmufu.dyndns.org/svn/serialdbus|subversion repository]] * [[http://schmufu.dyndns.org/viewvc/serialdbus|ViewVC für das repos]]

Projektwerkzeuge