marty14
Messages postés104Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 mai 2011
-
18 sept. 2008 à 18:47
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDerniè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.
marty14
Messages postés104Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 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.
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 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?
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 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:
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
marty14
Messages postés104Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 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
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 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