Serial et perl

Bonjour !

Dans le but de faire communiquer une arduino et le pc via le port série, j'ai longuement cherché côté PC comment faire un petit serveur.
J'ai trouvé un bon petit truc en perl mais... Ca marche pas super... Je reçois pas les caracteres ou quand je les recois, ils sont coupés, bugués, .....
Si quelqu'un avait des idées... je vous joins les codes :

Côté arduino (basique de chez basique...) :

void setup() {
  Serial.begin(19200);
}

void loop() {
  Serial.println("aa");
}

Côté PC en perl :

#!/usr/bin/perl

use Device::SerialPort; #chargement du module liaison série
my $port = Device::SerialPort->new("/dev/ttyACM0"); #Configuration du port USB/Série - sous Linux

$port->baudrate(19200);
$port->databits(8);
$port->parity("none");
$port->stopbits(1);

while (1) {
	my $char = $port->lookfor();
        if ($char) {
	print $char;
	}
}

Merci d'avance...

Salut, bon pour te rassurer, tes paramètres série corresponde bien, ton programme est pas trop mal, éssaye juste sa :

my $char : shared = "";
while (1) {
        $char = $port->lookfor();
        if ($char) {
                $char =~ s/^\s+$//m;
                $char =~ s/^\r+$//m;
                $char =~ s/^\n+$//m;
                $char =~ s/\s+$//m;
                $char =~ s/\r+$//m;
                $char =~ s/\n+$//m;
                print  $char . " \n\r";
	}
        sleep 1;
}

C’est légèrement plus propre et moins brute.
Pas sur que sa règle ton problème… :.
Skizo.

Sinon, sur PC, quelque soit l'OS, il existe déjà des programmes de communication série tout faits.

Rohh 3Sigma que ce que c'est que cette solution prémaché la !! laisse le faire par lui même c'est très bien :grin:

Je vois, tu es du genre sadique... :wink:

Pas du tout, mais du genre à encourager la création personnel puis le perl c'est toujours bien de connaitre un peut :slight_smile:

Skizoh : je prefere ta vision, je trouve ça bien plus amusant :grin:

Sinon, j'ai résolu mon problème grâce Device-serialport-arduino ( Device-SerialPort-Arduino-0.07 - A friendly way to interface Perl with your Arduino using Device::SerialPort - metacpan.org ).

Du coup, au cas où que quelqu'un ait le même problème, je joins mon code :

#!/usr/bin/perl

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

 
while (1) {
	if($Arduino->receive()) {
		$recu = $Arduino->receive();
		print $recu,"\n";
          }
}

Merci à vous 2 d'avoir pris le temps de me répondre :slight_smile:

Ah bien ça, je savais même pas que sa existait, merci du partage et bien joué.

Skizo.

La classe ! C'est aussi facile qu'en Python.