BUFFER=GROSSE GALERE

marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011 - 18 sept. 2008 à 18:47
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 22 sept. 2008 à 02:53
Bonsoir,
Voila pour certain vous le savez surement ca fait pas mal de temps que je galere sur la manipulation d'un contenus de buffer (reception de telecommande).
Mon soucis est que pour executer une action repetitif tel que (haut bas gauche droite ou bien nombre a plusieur chiffres etc.. ) je devais me fier a un buffer bien precis (1) car en faite une telecommande possede plusieur buffer
1 /qui affiche 0 ou 1 dont je me sert pour l'envois de mes actions et l'autre pour le code touche.

Ce buffer 1 m'affiche la serie suivante: 1 puis 0 ouis 1 quand tout va bien et donc quand 0 apparait = action
mais le soucis est que quelques fois il me fait 1 puis 0 puis 1 et re 0 et la ca merde bref c'est la galere.

Pour info je me sert aussi d'un label.change pour l'execution de mes manips.

Peut etre que pour resoudre mon soucis definitivement serait de coder un truc du genre si BUFFER1 affiche 3 fois quelques chose sans préciser quoi = action

Quelqu'un aurait la gentillesse de me coder un truc comme ca car j'en suis completement imcapable.

Par avance MERCI BEAUCOUPPPPPPPP

7 réponses

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
18 sept. 2008 à 19:14
bonsoir

quelque chose comme ça peut-être :

if MonBuffer=0 then MonBuffer=1
????

thierry la fronde
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
18 sept. 2008 à 19:35
Merci mais ca ne marche pas,
Une autre solution serait de dire si buffer1 affiche deux fois le chiffre 1 = action ou bien si buffer= 1 puis 0 puis 1 = action en plus ca me permettrais de determiner une rapiditée d'action enfin plus facile a dire qu'a faire.
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
18 sept. 2008 à 21:14
Salut,
Ca n'a rien a voir avec un buffer c't'histoire, un buffer n'est pas un bit qui passe de 1 à 0, et encore moins une communication série. Par contre on utilise un buffer pour récupérer les valeurs d'un bus série par exemple

"1 puis 0 ouis 1 quand tout va bien et donc quand 0 apparait = action"
"il me fait 1 puis 0 puis 1 et re 0 et la ca merde"
Pourtant c'est la même chose...

Je comprend pas le fonctionnement, pourrais-tu mieux expliquer comment communique cette télécommande et comment tu fais pour réceptionner ces données?
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
18 sept. 2008 à 23:48
il faudrait peut-être traiter un mot de 3(ou 4) bit plutôt que l'état d'un seul
si 0101 =action
1010=rien

(ou l'inverse)
thierry la fronde
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
19 sept. 2008 à 00:07
Oui il faut créer des buffers justement, ce qui n'est pas le cas ici apparemment mais qu'il faut faire pour simplifier la chose. Seulement, c'est rare de jouer avec des bit en .NET, je ne connais pas trop les fonctions disponible. Mais étant électro, je connais très bien le fonctionnement d'un buffer d'un port I2C sur un microcontrolleur par exemple. Le cas présent est sans doute similaire.

Bref, il faut faire 2 buffers puisque apparement tu as 2 canaux (je pige pas trop pourquoi, il n'y a pas 2 canaux sur une télécommande infrarouge que je sache). Le bits sont réceptionnés et "injecté" dans le buffer, poussant les bits déjà présent présents:

en rouge = le buffer
en bleu = un bit reçu

0000'0000 (au départ)
0000'0001 <= 1
0000'0011 <= 1
0000'0110 <= 0
0000'1101 <= 1
0001'1010 <= 0

Sur le 1er canal, à chaque fois qu'on recoit un bit, il faut tester le buffer. Si les 4 bits de poid faible = 1010, alors on lit le 2ème buffer qui contient le code de la touche. Et voilà, tout simple
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
19 sept. 2008 à 15:24
Merci kevin, en fait pour la communication j'ai trouvé une source HID sur le net qui me permet de recevoir des données USB de ma telecommande.
Je parle de plusieurs buffers mais en fait je ne sais pas si il y en as plusieur
je sais juste que le progr m'affiche bufferIN(1) bufferin(2) etc...
Le buffer 0 reste toujours a 0
Buffer1 affiche 0 puis 1 puis 0 desfois 1 =instable ,ca tourne en boucle si je garde la touche appuyée
buffer2= code touche
buffer3 toujours 6
Buffer 4 une serie de chiffre tout comme le buffer1 sauf que la c'est different et ca tourne en boucle si je garde la touche appuyée j'arrive a controler ce buffer comme ceci Asc(BufferIn(5)) car en fonction de son contenus il m'afficheras toujours 54 mais le HIC c'est qu'avec cette facon de faire ca tourne pas en boucle, 54 c'est tout jusqu'as ce que je réappuye sur la touche!! dommage pour les répetition!!

Si tu peus m'apporter uN peu aide ce serat avec plaisir.
Merci d'avance
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
22 sept. 2008 à 02:53
"je sais juste que le progr m'affiche bufferIN(1) bufferin(2) etc..."

Quel programme? Où affiche-t-il cela? Sous quel forme affiche-t-il cela?
Comment obtiens-tu ces données dans ton code? Comment sais-tu lorsque elles changent?

Que reçois-tu exactement sur le buffer1 lorsque:
- Tu presse juste une touche
- Lorsque tu maintient une touche
A quel moment les données de ton Buffer2 sont-elles modifiées? Quand sont-elles correctes?

Suffit de voir les états de tes buffers dans le temps...
Fais un log des états des buffers dans la console, et fais voir
0
Rejoignez-nous