screen /dev/ttyUSB0 9600 | via script schreiben und lesen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
a_pat
Beiträge: 167
Registriert: 11.01.2005 16:54:22
Wohnort: Luzern

screen /dev/ttyUSB0 9600 | via script schreiben und lesen

Beitrag von a_pat » 25.06.2007 17:45:59

hallo

der code

Code: Alles auswählen

screen /dev/ttyUSB0 9600
läuft super.

damit kann ich nun auf mein arduino board, mit dem usb2seriell ( ftdi ) modul schreiben und auch davon lesen.
jedoch möchte ich lediglich einzelne zeichen aus dem /dev/ttyUSB lesen bzw. darauf schicken.
am liebsten hätte ich ein bash script. hat jemand eine idee, wie dies zum laufen kommen könnte??

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von cirrussc » 25.06.2007 18:04:34

Niedliches Board aber großer AVR!
Wieso per Script?
Kannst doch ein Terminalprogramm nehmen (minicom, picocom, cu, cutecom...).
Wenn mit script musst du aber vorher die Serielle konfigurieren, mit setserial.

Gruß cirrussc
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

a_pat
Beiträge: 167
Registriert: 11.01.2005 16:54:22
Wohnort: Luzern

Beitrag von a_pat » 25.06.2007 20:55:02

ich versuch ne installation zu bauen. dabei soll, wenn ein knopf, welcher am arduino angeschlossen ist, gedrückt wird, auf einem zweitrechner ein programm gestartet werden ( mplayer ). wenn ich minicom oder picom nehme, hab ich nur probleme. ich komme mit diesen progis nicht wirklich zu recht! etliche versuche sind gescheitert. mit pyserial hab ich lange herum gefummelt jedoch finde ich python einen regelrechten bastel! somit wollte ich wieder zurück zu meiner ursprungsidee und ein bash script schreiben... es soll lediglich sowas wie:

wenn der buchstabe a von arduino geschickt wird, soll mplayer starten. wenn b reinkommt, startet ein anderer film... arduino brauch ich bidirektional, somit hab ich mit picom mühe gehabt.

ich bin um jegliche tipps sehr dankbar!!

den das projekt soll nächste woche präsentiert werden... diplompräsentation... im kunstbereich... ich hatte bis anhin gedacht, ich hätte mit pyserial alles was ich brauch... aber nix ist. muss nochmals etliche nachtstunden investieren : )

a_pat
Beiträge: 167
Registriert: 11.01.2005 16:54:22
Wohnort: Luzern

Beitrag von a_pat » 27.06.2007 02:20:11

jäu : )
ich bin nun auf dem richtigen weg. hier gibts ein c programm, welches von arduino schreiben und auch darauf lesen kann.
http://todbot.com/blog/2006/12/06/
somit kann ich von einem bash-script bequem zugreifen und externe programme starten : )
zurzeit hab ich zwei probleme, die ich nicht lösen kann:

auf meinem zweit rechner läuft nun dieses programm, welches noch erweitert werden muss:

Code: Alles auswählen

#!/bin/bash

i=0
ardread=0
q=0

function arduread
        {
                ../arduino-serial -b 9600 -p /dev/ttyUSB0 -r > /tmp/ardread
                ardudiff
        }

function ardudiff
        {
                ardread=`cat /tmp/ardread |grep -o 0`   #|sed -e 0`
                case $ardread in
                        "0") i=1;;
#                       "read: 0") i=1;;
#                       "read: 1") echo 'mplayer';;
                esac
                case $ardread in
                        "read: 1") ssh bla@bla DISPLAY=:0 mplayer -fs -vo x11 bla.avi;;
                esac

                #if [ $ardread -eq 0 ]; then
                #       i=1
                #       echo 'stop'
                #fi


while [ $i -eq 0 ];
        do
                arduread
        done
wie kann ich in einem bash-script nach tasten abfragen, die gedrückt werden, ohne dass das script auf die eingabe wartet?

zweite frage:
ich möchte mich via ssh auf diesen rechner einloggen und

Code: Alles auswählen

../arduino-serial -b 9600 -p /dev/ttyUSB0 -s
(die sende option) verschiedene einzelne strings schicken. soll ich da vielleicht mit screen arbeiten? oder gibts vielleicht elegantere lösungen?

Antworten