Thread RS232 Probleme (14 answers)
Opened by Oliver at 2015-10-10 18:42

clms
 2015-10-13 21:42
#182591 #182591
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
Zu Deinem eigentlichen Problem kann ich nicht viel beitragen.
Als ich mich - vor Jahren - mitCPAN:Device::SerialPort beschäftigt hatte, war die Ursache für meine Probleme, der unterschiedliche Zeilenumbruch. Ich musst auch unter Linux "\r\n" senden. Aber das scheint bei Dir nicht das Problem zu sein.

Folgender Code ist aber garantiert falsch:
Guest Oliver
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
my $antwort = "";
my $zeichen = "";
my $count=0;
while ($count<10000) {
  $count=$count+1;
  $zeichen=$rs485_port->read(1);
  $antwort=$antwort.$zeichen;
  if ($zeichen eq ";") {
    print "$antwort\n";
    my $antwort = "";
    my $zeichen = "";
  } 
}

Wenn Du $antwort und $zeichen zurücksetzen willst, musst Du die my innerhalb der if-Schleife weglassen, denn die deklarieren neue Variablen, die lokal in der if-Schleife sind und die äußeren Variablen verdecken.

Besser:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
my $antwort = "";
my $count = 0;
while ($count<10000) {
  $count++;
  my $zeichen = $rs485_port->read(1);
  $antwort .= $zeichen;
  if ($zeichen eq ";") {
    print "$antwort\n";
    $antwort = "";
  } 
}

$zeichen wird nur innerhalb eines Schleifendurchlaufs genutzt und sollte deshalb auch nur dort deklariert werden.

View full thread RS232 Probleme