Thread Kommunikation zwischen zwei Scripts (in eine Richtung) - PIPEs? (6 answers)
Opened by phischmi at 2016-07-16 00:24

Gast phischmi
 2016-07-16 00:24
#185084 #185084
Hallo zusammen,

ich beschäftige mich erst seit wenigen Tagen mit Perl, habe jedoch bereits ein klein wenig Erfahrung in anderen Scriptsprachen.

Ich möchte über ein Perl-Script ein Arduino-Programm steuern.
Das Script soll über die serielle Schnittstelle einen Wert von 0-255 an den Arduino übertragen. Das Programm auf dem Arduino liest hierzu im loop() die serielle Schnittstelle aus.
Den gewünschten Wert gebe ich dem Perl-Script als Argument mit. Dies muss auch so beibehalten werden, da ich das Script wiederum aus einem anderen Programm heraus aufrufe.

Mein Script sieht aktuell so aus:

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
#!/usr/bin/env perl

use Device::SerialPort::Arduino;

use strict;
use warnings;

my $Arduino = Device::SerialPort::Arduino->new(
  port     => '/dev/tty.usbmodemFA131',
  baudrate => 9600,
  databits => 8,
  parity   => 'none',
);

my $speed = $ARGV[0];

sleep(2);

# Send something via Serial
$Arduino->communicate("$speed")
or die 'Warning, empty string: ', "$!\n";

# receive sth from Arduino with delay
print $Arduino->receive(2), "\n";


Dies funktioniert soweit auch, jedoch kommen nach einigen Versuchen nur noch einzelne Zahlenteile beim Arduino an. So wird aus "100" z.B. "1".
Diese Problematik wird hier auch beschrieben (ganz runter scrollen).

Nun ist meine Idee, die Kommunikation zum Arduino aufrecht zu erhalten und das Script mit wechselnden Werten zu füttern, ohne es jedesmal explizit mit einem anderen Parameter aufzurufen.
Stattdessen würde ich ein zweites Hilfsscript "zwischenschalten" wollen und mit dem gewünschten Parameter aufrufen. Dieses kommuniziert dann mit dem Script, welches die serielle Verbindung mit dem Arduino hält.
Soweit mein Plan :D

Da ich, wie gesagt, noch absoluter Neuling in Perl bin, ist meine Frage nun, ob und wie ich das bewerkstelligen kann. Meine Vermutung ist, dass sich so etwas doch mit PIPEs lösen lassen müsste, oder?
Aus den entsprechenden Beiträgen im Netz werde ich jedoch leider nicht schlau. Hier scheint es sehr viele Ansätze zu geben :/
Ich möchte das Problem gern möglichst einfach und für mich v.a. nachvollziehbar lösen.

Ich hoffe, ihr könnt mir hier (auf die Sprünge) helfen. Wäre euch sehr dankbar :)


Danke & viele Grüße

Philipp
Last edited: 2016-07-16 03:19:26 +0200 (CEST)

View full thread Kommunikation zwischen zwei Scripts (in eine Richtung) - PIPEs?