jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 21 févr. 2006 à 10:45
Salut,
Ox.... c est une valeur En hexadecimal Non?
De toute facon tant qu il y aura autre chose que des chiffres dans ta chaine, tu ne pourras pas utiliser la fonction Cint() (Que les experts me corrigent si je me trompe)
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200823 21 févr. 2006 à 11:14
Tu utilises le signe '+' pour concaténer des chaines de caractères ??? En quel langage travailles-tu ??
"Ox10000000" et "10" sont des constantes.
Sonde_4_Type est sur 4 bits.
Sonde_1_Resol est sur 2 bits.
Total : 16 bits.
Quand tu additionnes (pas les chaines de caractères, mais bien les nombres) les deux constantes, tu obtiens :
Ox1000000000100000 (=32800 en décimal)
L'ajout de Sonde_4_Type et de Sonde_1_Resol peut faire varier 6 bits, représentés par un X dans l'expression ci-dessous :
Ox10000000XX10XXXX
Il s'agit des puissances de 2 suivantes : 0,1,2,3,6 et 7.
En fonction des valeurs de Sonde_4_Type et de Sonde_1_Resol, tu vas ajouter (ou pas) 1,2,4,8,64 ou 128 à ta constante initiale (c'est-à-dire 32800)
Le code devient dès lors :
Dim Sonde_4_Type As String
Dim Sonde_1_Resol As String
Dim nul2 As Long
Sonde_4_Type = "00"
Sonde_1_Resol = "1000"
nul2 = 32800 'concaténation de Ox10000000, XX, 10 et XXXX, suivie d'une transformation en Long
If Left(Sonde_4_Type, 1) "1" Then nul2 nul2 + 128
If Right(Sonde_4_Type, 1) "1" Then nul2 nul2 + 64
If Left(Sonde_1_Resol, 1) "1" Then nul2 nul2 + 8
If Mid(Sonde_1_Resol, 2, 1) "1" Then nul2 nul2 + 4
If Mid(Sonde_1_Resol, 3, 1) "1" Then nul2 nul2 + 2
If Right(Sonde_1_Resol, 1) "1" Then nul2 nul2 + 1
MsgBox nul2
Il faut noter qu'en VB, un Integer est borné à 32767. Comme le
nombre que tu vas obtenir est forcément supérieur à 32800, il faut
utiliser un type Long, et pas Integer.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200823 21 févr. 2006 à 11:19
budylove> La variable nul que tu attends doit être sur 16 bits.
Ce calcul : TempControlword_Ch1 = Ox10000000 + CInt(Sonde_1_Resol) + "10" + CInt(Sonde_1_Type)