tonylivingston
Messages postés11Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention 9 mai 2006
-
10 févr. 2006 à 22:39
tonylivingston
Messages postés11Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention 9 mai 2006
-
12 févr. 2006 à 03:51
Bonjour,
Je débute en vb et vba. A l'aide Svp.
Comment réceptionner les données d'une balance avec mscomm et récupérer
les différents messages dans Excel, sachant que je veux récuperer ces
données cellule par cellule.
Je m'explique: colonne A: code produit, Colonne B: nom produitn, Colonne C: total brut etc......
voici ci-dessous les informations dont je dispose, je signale que je voudrais récupérer le mode complet .
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 févr. 2006 à 00:20
Salut
Sans être méchant, très peu de chance que qqun te fasse le code tout fait, tu rêves et de toute façon, on n'est pas là pour ça.
Analyse toi même quelles sont les données clés, comment lire, comment "parser", c'est à dire découper cette chaine pour en récupérer la structure, donc les données, puis les adpater à ta feuille Excel.
Renseigne toi sur chacune de ces étapes, quand tu auras reçue une trame, tu pourras envisager de traiter les données.
Si tu rencontres des difficultés sur un code particulier, reviens poser ta question, mais sur un thème précis.
Le site contient des sources qui font de la lecture de port série.
Le site contient aussi des sources qui - même si ce n'est pas exactement ton applicatif - font du tri dans des données reçues au fil de l'eau, comme les "chat", inspire t-en.
Bon courage.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 11 févr. 2006 à 15:27
Je ne vois pas ou est ton problème si tu as déjà récupérer la trame. Tu dois l'avoir normalement dans une chaine de caractères, il ne te reste plus qu'a faire une série de Mid() pour récupérer chacun des paramètres :
Code : caractères 2 à 8,
Nom : caractères 9 à 34,
.....
.....
et ainsi de suite. Et si tu veux virer les espaces superflus tu fait ensuite un Trim() sur chacun des paramètres avant d'envoyer tout ça dans leurs cellules respectives.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 févr. 2006 à 19:17
Salut
En fait, ce que tu reçois de la comm, c'est une chaine de caractères, c'est à dire une succession de Bytes.
Parmi ces caractères, certains sont reconnaissables en ASCII (lettres chiffres, signes), mais d'autres, dans ton protocole, devront être analysés en recherchant le Code ASCII du caractère, avec Asc(monCaractère) = valeur entre 0 et 255.
Il te faut donc isoler, caractère après caractère, chaque caractère de ta chaine.
Exemple :
Tu reçois ta chaine.
Dans le protocole que tu énumères en exemple, le premier caractère devrait être celui là :
STX 0X02 Début de transmission
monCaractère = Mid(maChaine, 1, 1)
monCodeAscii = Asc(monCaractère)
Il n'est pas un code ascii "lisible".
0X02 veut dire que la valeur est Hexadécimale (précédée de 0X).
Pour tester s'il vaut bien 02, il suffit de comparer :
If monCodeAscii = &h02 Then
' Twingo : J'ai trouvé un Début de transmission"
...
End If
... et comme ça pour chaque caractère. Il va donc falloir faire une boucle pour analyser chacun d'eux (Do-Loop ou For-Next)...
Pour convertir un chiffre hexa en décimal :
ValeurComparaison = Val("&h02") ' 0X se transforme en &h sous VB
Pour convertir un décimal en héxa :
ValeurHexa$ = Hex(ValeurDécimale) ' en String, car un code Hexa peut contenir des lettres (A à F)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)