Go Down

Topic: [resolu] Problème de lecture sur port série (Read 1 time) previous topic - next topic

bricofoy

#5
Feb 20, 2012, 09:15 pm Last Edit: Feb 20, 2012, 09:26 pm by bricofoy Reason: 1

A la fin de ton prog tu as une instruction else : tu rajoutes la commande pour afficher les données dedans et au moins quand aucune commande n'est reçue sur le port série il reboucle.

Dans ton cas, il attend une instruction et n'affiche plus rien.



Oui mais c'est precisément le but recherché, le comportement est le bon, si je boucle sur l'affichage ça rempli le terminal pour rien, ce n'est pas le but.

là ça affiche l'heure si j'envoie un caractère, c'est ce que je veux. La question n'est pas là.
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'instal

bricofoy


Ton problème c'est que tu es obligé d'entré des données dans le port série pour avoir une simple lecture de l'heure ?


Non, je me suis mal expliqué. Mon problème n'a rien à voir avec l'heure ou le DS1307, ni la lecture/écriture de ce dernier.

Mon problème, c'est juste que je ne comprends pas comment lire correctement ce que j'ai envoyé sur le port série. Ou plutot pourquoi la manière dont je le fais ne fonctionne pas.

Par exemple, si dans le terminal j'envoie "h21"

avec les instructions suivantes, en considérant que les variables sont toutes des int :
if(Serial.available()) {
commande=Serial.read();
data1=Serial.read();
data2=Serial.read();
}

je devrais donc avoir commande = 104 data1=50 data2=49 (les valeurs ascii des caractères h 2 1)

or ce n'est pas ce que j'obtiens. Pour arriver à l'obtenir, il faut que entre deux appels à Serial.read() j'envoie des caractères sur le port avec Serial.print(" ")

c'est ÇA que je ne comprends pas.
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'instal

fdufnews

C'est pas le fait d'envoyer une donnée qui fait fonctionner ta liaison. C'est parce que l'envoi de donnée créé une temporisation et que cela lui laisse le temps de recevoir le caractère suivant.
Il ne faut pas oublier de faire un if (Serial.available()) avant chacune des lecture de caractère.

bricofoy

ok, ça ça me semble logique vu ce qui se passe.

Mais alors pourquoi l'exemple sur lequel je me suis basé fonctionnait, lui ? Il n'y avait pas de temporisation dedans non plus...
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'instal

fdufnews


Go Up