Rs232 acquisition temps reel

pc309 Messages postés 2 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 19 novembre 2013 - 18 nov. 2013 à 16:29
pc309 Messages postés 2 Date d'inscription lundi 18 novembre 2013 Statut Membre Dernière intervention 19 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

XOUT_MSB = H2D(Left(n, 3))
XOUT_LSB = H2D(Mid(n, 4, 3))
YOUT_MSB = H2D(Mid(n, 7, 3))
YOUT_LSB = H2D(Mid(n, 10, 3))
ZOUT_MSB = H2D(Mid(n, 13, 3))
ZOUT_LSB = H2D(Right(n, 3))


'intff = H2D(ec.AsciiLine)


If i > 1000 Then

i = 1000

Range("Y2:AC1000").Copy Range("Y1:AC999")

End If

XOUT = SL(XOUT_MSB, 6) + SR(XOUT_LSB, 2)
YOUT = SL(YOUT_MSB, 6) + SR(YOUT_LSB, 2)
ZOUT = SL(ZOUT_MSB, 6) + SR(ZOUT_LSB, 2)

Worksheets("Demo").Cells(i, 25) = IIf(XOUT < 8192, XOUT, XOUT - 16384)
Worksheets("Demo").Cells(i, 26) = IIf(YOUT < 8192, YOUT, YOUT - 16384)
Worksheets("Demo").Cells(i, 27) = IIf(ZOUT < 8192, ZOUT, ZOUT - 16384)

i = i + 1


Loop

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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.
0
Rejoignez-nous