ryback08
Messages postés5Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention18 mars 2006
-
17 mars 2006 à 12:46
ryback08
Messages postés5Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention18 mars 2006
-
18 mars 2006 à 01:38
Bonjour
Pour un projet d'etudiant, je doit traiter une base de donnée avec excel.
Cette base doit etre converti en trame ASCII oui Hexa suivant un formatage bien particulier
Pour la conversion Ascii, Hexa, je reussi a m'en sortir
voici a ce propos les codes :
'conversion CodeA en ASCII
Function ASCII(CodeA)
ASCII = Asc(CodeA)
End Function
'conversion string en trame hexa
Function Hexa(Str As String) As String
Dim car
For i = 1 To Len(Str)
car = Mid$(Str, i, 1)
Hexa = Hexa & HEX$(Asc(car))
Next
End Function
Par la suite, cette trame doit etre compresser pour etre envoyer dans un pic par le port serie
la trame ayant enormement de nombre, la compression s'effectue a ce niveau, en ne prennant que le quartet de poids faible de la conversion d'un nombre ASCII en Hexa
car :
pour de 0, le code hexa est 30, alors que je souhaite a $0
pour 1=$31, je veux $1
pour 2=$32, je veux $2
je sais c'est idio, suffirais de copier juste le caractere mais je n'ai pas que ca dans la trame.
en bref, je souhaiterais mettre une condition sur la conversion hexa pour que si c'est un nombre entre 0 et 9, il ne me garde que le quartet de poid faible
comment puis-je faire cela, mais connaisance en VB sont malheureusement bien basse
ryback08
Messages postés5Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention18 mars 2006 17 mars 2006 à 20:03
Merci pour la fonction de conversion ASCII (en tout cas, elle fonctionnait comme cela) je vias verifier cela
donc la base de donnée (qui est composée de coordoonée géographique et
d'autre chose) est convertie une fois en ASCII et ensuite en Hexa.
comme cette table va etre stocker dans une mémoire PIC, il faut
compresser les trames.
une trame est composé en gros, de chiffre, de virgule et point virgule et de lettre (avec principalement des chiffre)
nous somme d'accord que
ASCII -> HEXA
0 -> 30
1 -> 31
2 -> 32
... -> ...
9 -> 39
le code hexadecimal est sur 1 octet (8bit) ce qui nous donne 2 quartet (4bit)
avec a chaque fois pour les nombres, le quartet de poid fort = 3 et le quartet de poid faible qui vaut le nombre
comme ma trame est composé à 90% de chiffre, il y aura presque la
moitier de la trame avec des 3. donc la compression consiste a
supprimer ces 3 et a ne garder que le quartet de poid faible (cela
revient a ne pas faire de conversion)
donc je souhaiterais integrer cette condition dans le codage hexadecimal
Vous n’avez pas trouvé la réponse que vous recherchez ?
comme vous pouvez le constaté, quasiement que des chiffres
apres conversion en Hexa :
303534362E38382C30343634362E32382C33372C52
alors que je voudrait avoir :
05462E882C046462E282C372C52
(j'ai pas tout colorier, la fleme ;-))
en gros, quand c'est un caractere, je converti en hexa, quand c'est un
nombre, je laisse le nombre (ou je garde le quartet de poid faible de
la conversion hexa)
c'est juste que j'ai pas loin de 700 trames comme celle ci, donc a
mettre dans une mémoire pic, ca ne tiendra jamais, d'ou la compression
(si on peu appeller cela de la compression).
ASCII -> HEXA -> binaire
0 -> 30 -> 0011 0000 (en rouge, quartet de poid fort, en bleu quartet de poid faible)
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201826 17 mars 2006 à 21:39
Bonsoir,
Si test des positions de 2 en 2 "3 et 1....9"> Replace "xy" par "y" (par la 2me position)
en testant si "y" n'est pas une lettre.
Le code doit tenir sur une ligne
voilà, comme çà tu as la réponse fonctionnelle etc...
là où je suis sur la touche, c'est ton 0 -> 30. et j'insiste
lourdement parce qu'il y a peut-être une manière plus rapide en sachant
d'où vient cette convertion.
ryback08
Messages postés5Date d'inscriptionmercredi 15 mars 2006StatutMembreDernière intervention18 mars 2006 18 mars 2006 à 00:44
Merci PCPT et Gobillot, j'etudierais cela demain, il se fait tard
de PCPT :
voilà, comme çà tu as la réponse fonctionnelle etc...
là où je
suis sur la touche, c'est ton 0 -> 30. et j'insiste lourdement parce
qu'il y a peut-être une manière plus rapide en sachant d'où vient cette
convertion.
c'est la table de conversion ASCII -> Hex, j'invente rien !
ce que je comprends pas c'est comment il va faire pour "décompressé"
étant donné que 2 trames différentes pourront avoir le même résultat:
la Trame ne sera pas décompressée (en fait, c'est ca la trame final)
elle sera dans un pic et l'on fera des tests dessus
en fait, la trame que vous voyer, ce sont les coordoonées polaire de radars fixe (avec la vitesse et le sens de flashage).
Pour un debut de projet (car on n'a malheureusement pas le temps de
terminer le projet cette année, ca sera pour le prochain millesime) je
dois constituer la trame suivant les criteres que nous a fixé le prof.
ensuite, on aura la carte avec la base de donnée dans le pic. un gps
brancher par une liaison serie. la carte lira les coordonnées du GPS et
les comparera a la base de donnée. un signal avertira si l'on se
raproche d'un radar. (voila en gros le projet)