pc309
Messages postés2Date d'inscriptionlundi 18 novembre 2013StatutMembreDernière intervention19 novembre 2013
-
18 nov. 2013 à 16:29
pc309
Messages postés2Date d'inscriptionlundi 18 novembre 2013StatutMembreDernière intervention19 novembre 2013
-
19 nov. 2013 à 10:33
bonjour,
j'ai ecrit une petit routine qui lit le port serie( 115200 baud) a travers vba et affiche le resultat sur un graphe.
En fait je lis lis a travers un micro plusieurs register I²C
( 6registres) mais je n'arrive pas a lire toutes mes datas car ells sont cadence a 800HZ, ma boucle rate une ou plusieurs valeurs.
J'aimerais pourvoir lire mes registres toutes les 1ms .
Y' a t'il un moyen de ne plus vaoir de latence dans mes lecture ou de forcer une lecture toutes les 1ms?
Ci dessous mon code :
Merci
Philippe
Do While CB_RUN_DEMO.Caption = "STOP"
ec.AsciiLine = "R01-06" lecture des 6 registres a travers RS232
ec.WAITmS = 0.1
n = ec.AsciiLine
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 18 nov. 2013 à 17:19
Bonjour,
Essaye plutôt de passer par un tremplin (un tableau dynamique, par exemple) que tu alimentes par les données brutes. Cela réduira considérablement la durée de chaque enregistrement (évitera tant les calculs que la mise à jour de tes cellules)
Utilise in fine ce tableau pour faire toutes tes opérations et mises à jour.
pc309
Messages postés2Date d'inscriptionlundi 18 novembre 2013StatutMembreDernière intervention19 novembre 2013 19 nov. 2013 à 10:33
Bonjour,
merci pour cette suggestion je vais regarder .
Par contre si je ne veux pas afficher de resultats sur un graphe mais juste faire des accès sur le port série, y'a til le moyen de controler ou de forcer le temps de la boucle?
Le but etant toujours de recuperer les informations toutes les 1 ms .
Le code serait le suivant :
Do While CB_RUN_DEMO.Caption = "RUN"
ec.AsciiLine = "R00" 'lecture continue de ce registre
ec.WAITmS = 0.1
If ec.AsciiLine = 1 Then
ec.AsciiLine = "R01-06" 'register "x y z" 01 to 06
ec.WAITmS = 0.1
n = ec.AsciiLine
End If
Loop
Actuellement cette boucle est trop lente .je voudrais garantir que cette boucle ( quand le registre 00 passe a 1) se fasse en moins d'1ms, en considerant que les lectures des registres elle memes se fasse en quelques µs)