Go Down

Topic: Serial et envoi de chaines de caractères (Read 768 times) previous topic - next topic

zerr0s

Bonjour,

J'essaie d'envoyer des mots au travers d'une liaison série avec un script python, et je n'y arrive pas.
L'arduino reçoit les données au format ascii.

Voici mon code:
Code: [Select]
#!/usr/bin/env python2.7

import sys
import os
import serial

ser = serial.Serial("/dev/ard1", 115200)

while True :
        line = sys.stdin.readline()
        ser.write(line)

        line = ser.readline().strip()
        print "Arduino:", line


Je voudrai envoyer une chaine de ce type: xxxx:xxxxx:xxxxx

Auriez-vous une solution à me proposer ?

J'espère que vous pourrez m'aider.

schizophrene

Salut,

Je ne comprends pas vraiment le problème de recevoir des caractères ASCII? A moins que tu ne t'attendes à recevoir des mots entiers, et dans ce cas tu te trompes: l'Arduino récupère octet après octet les données sur le port série (un octet = un caractère ASCII).
Donc prévoir de la concaténation au niveau Arduino.

skywodd

Bonjour,


Auriez-vous une solution à me proposer ?

Sérieusement un minimum de recherche sur google c'est pas la mort ...
http://pyserial.sourceforge.net/pyserial_api.html

String fixe :
Code: [Select]
ser.write('xxxx:xxxxx:xxxxx')

String à partir d'arguments :
Code: [Select]
s1 = 'toto'
s2 = 'tata'
s3 = 'titi'
ser.write("%s:%s:%s" % (s1, s2, s3))
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

zerr0s

Bonjour,

Des recherches google, j'en ai fait, mais ne sachant pas non plus comment exprimer mon problème dans une simple recherche google,je ne risque pas forcément de tomber sur les bonnes solutions. Après, si vous regardez mon code, il fait la meme chose que le bout de code que vous me donnez, à la différence pret que je saisi la chaine en stdin. J'ai testé votre solution, et effectivement, les caractères envoyés depuis le python, apparaissent en ascii les uns après les autres sur l'arduino.

Par contre, étant débutant autant en python qu'en C, je prends toutes les expériences :) Et ce que je ne savais pas, c'est que l'arduino récupère octet par octet (merci pour l'info), et en ascii de surcroit. Il faut donc que je boucle pour tout récupérer, et que je passe le tout dans une moulinette ascii to decimal si j'ai bien tout compris ?

En tout cas merci pour les informations, j'ai compris d'où vient mon problème ;)

skywodd


Par contre, étant débutant autant en python qu'en C, je prends toutes les expériences :) Et ce que je ne savais pas, c'est que l'arduino récupère octet par octet (merci pour l'info), et en ascii de surcroit. Il faut donc que je boucle pour tout récupérer, et que je passe le tout dans une moulinette ascii to decimal si j'ai bien tout compris ?

-> http://arduino.cc/en/Reference/ParseInt ;)
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Go Up