Controle buffer

Résolu
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011 - 24 août 2008 à 05:45
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011 - 26 août 2008 à 14:19
Bonjour,
Par l'intermediaire d'une télécommande je recois des données 1 ou 0 dans un buffer = bufferin() mais je constate quand fonction de la marque de la télécommande la récéption dans ce buffer peut etre plus ou moin rapide.Savez vous si il est possible de controler la vitesse de reception d'un buffer ?

Par avance merci beaucoup.

10 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 août 2008 à 13:48
Essaye de systématiquement typer tes variables, c'est mieux.

Dim i as integer
Static c as integer

For i = 1 To Len(BufferIn(1))If Mid$(BufferIn(1), i, 1) "0" Then c c + 1
If c=30 then
    [Ton action]
    c=0
end if
Next

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 août 2008 à 10:12
un buffer est une zone mémoire, il n'a intrinsèquement pas de vitesse si ce n'est celle la Ram de ta machine (donc très rapide).

Le problème peut venir du port de communication, de la vitesse à laquelle il reçoit les données, du  traitement qui est fait derrière pour les mettre dans le buffer.

Ou plus simplement aussi le problème peut venir de la télécommande. Même si tu as un port très rapide, tu ne recevra pas les données plus vite qu'elle ne les envoie.

Tu peux très bien avoir une ferrari et pourtant rouler à 30k/h

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
25 août 2008 à 09:03
Je sais pas,mais j'apprend.
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
25 août 2008 à 09:04
Merci CASI pour tes informations donc je doit trouver une autre solution a mon trés grand probleme pour la fiabilité de l'envoie de l'action et la répetition de la touche ex: HAUT, BAS, DROITE, GAUCHE.
En détail voila ou ca bloque :
donc pour n'importe quelle telecommande j'ai toujours un

-Buffer1 qui m'affiche 0 ou 1 a une vitesse qui varie en fonction du matos mais qui s'actualise tout le temps meme si la touche est répétitif.

-Buffer 2 qui m'affiche en permamance 6 qui ne s'actualise jamais

-Buffer 3 qui m'affiche le code touche qui s'actualise uniquement que si j'appuie sur une touche differente.

-Buffer4 qui m'affiche une serie de chiffre impossible a utiliser et que je manipule pour le moment comme ca  ASC(BufferIn(4)) , ce buffer me sert a lancer mes action touches,  c'est la methode la plus efficasse pour mes actions de par son resultat qui se termine toujours par 54 mais si j'appuie plusieur fois sur la meme touche il ne s'actualise jamais.

Tous les resultats de ces buffers s'affiche dans un control LABEL.CHANGE
et dans une procedure qui tourne constament par consequent affiche en permanence mes anciens resultat dans le label jusqu'a la nouvelle action.

Donc le lancement de mes actions touches dependent d'une part du resultat du :BUFFER 3  pour l'action et pour la repetition des touches je depend de : ASC(BufferIn(4)) si 54 = ACTION

L'ideal serait de manipuler le buffer 1  Ou le buffer 4 ou bien de créé un truc qui m' affiche a chaque action 0 ou 1 mais je ne vois pas comment.

Oui oui je sais c'est l'embrouille dans ce sujet et c'est bien pour ca que je desespere.
0

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

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 août 2008 à 16:14
si la "lenteur" vient effectivement de tes différentes télécommandes, tu ne vas pas pouvoir faire grand chose.

Si par contre il vient du code de traitement qui se trouve entre le port de reception et le buffer et dont le role est de mettre les données réçus dans le buffer, il faut voir s'il est améliorable.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
25 août 2008 à 16:50
Merci Casy de ta réponse que j'attendais avec impatience, en fait il na sagit pas de lenteur mais de trop de rapiditée.donc en gros c'est peut etre mon code de reception qui deconne .
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
26 août 2008 à 11:55
Quelqu'un pourrait m'expliquer pourquois avec Asc(BufferIn(5)) la répétition des bits ne ce fait pas car si je fait uniquement BufferIn(5) les chiffres ce répéte constament du moment que j'appuie sur une touche.
Asc(BufferIn(5))  reste la meilleur methode pour controler mon buffer dans mon cas peus importe mes telecommandes il me donnera un resultat de 54 et donc 54 me servirat a lancer mes actions de code touche, le seul hic c'est qu'il ne ce repete pas si je garde la touche appuyée.
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
26 août 2008 à 12:38
Sachant que mon buffer 1 est present sur toutes les telecommandes et qu'il affiche constament soit 0 ou 1 a une vitesse qui varie en fonction mais tres souvent trop rapidement, ne saurait il pas possible de faire en de faire un truc du genre:
Compter le nombre de fois  que buffer1 affiche 0 ou 1, si son comptage est  a 30 par exemple action

Je pensse que c'est une solution et ca me permettrais du coup de regler la vitesse de répétition des touches.
Mais je suis imcapable de réaliser un tel code, si quelqu'un veut bien m'aider sur cette conception code ce serait cool .
Par avance merci
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
26 août 2008 à 13:09
J'ai deja ca, il ne reste plus qu'as trouver comment accumuler le total

Dim i, c
For i = 1 To Len(BufferIn(1))If Mid$(BufferIn(1), i, 1) "0" Then c c + 1
Next
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
26 août 2008 à 14:19
Merci enormement, j'avais la solution en meme temps. MERCI MERCI MERCI :)
0
Rejoignez-nous