Thread Kommunikation zwischen zwei Scripts (in eine Richtung) - PIPEs?
(6 answers)
Opened by phischmi at 2016-07-16 00:24 Guest phischmi Ok, dann also so (Linux): 1. Führe folgendes bash-Skript aus: Dann siehst Du ein eigenartiges neues File "myfifo" im Verzeichnis (named pipe). 2. Dein Skript zum Senden ("worker.pl") sollte dann etwa so aussehen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #!/usr/bin/env perl # worker.pl use Device::SerialPort::Arduino; use warnings; use strict; my $Arduino = Device::SerialPort::Arduino->new( port => '/dev/tty.usbmodemFA131', baudrate => 9600, databits => 8, parity => 'none', ); my $line = "nothing"; print "Worker running.\n"; while ($line ne "exit") { $line = <>; if ($line) { chomp($line); print "I got: $line\n"; $Arduino->communicate($line); next; } else { $line = "nothing"; } sleep(1); } print "Worker finished.\n"; # receive sth from Arduino with delay # print $Arduino->receive(2), "\n"; Führe "worker.pl" folgendermaßen aus: Code: (dl
)
./worker.pl < myfifo 3. Jetzt liest worker.pl Daten aus myfifo (und sendet diese an Arduino). Mit Code: (dl
)
echo 100 > myfifo sendet man Daten über myfifo nach worker.pl. Man beendet worker.pl entweder mit Strg+C, oder man sendet ihm "exit" über den echo-Befehl. Ich kann den Arduino-Teil nicht testen, aber die Pipe-Kommunikation geht bei mir soweit. |