Bonjour,
Actuellement, je dispose d'une 1ère réalisation électronique comprenant un CB405 et un module de lecture RFID.
Le but consiste à réceptionner une donnée d'identification électronique ASCII codé HEXADECIMAL, de type STRING * 16 depuis le RS232.
Puis cette donnée doit être convertie en DECIMAL.
La réception de données est maîtrisée sauf le traitement de conversion de données.
Le problème majeur s'agit de la longueur de donnée ASCII qui est de 10 caractères (STRING) pour une valeur HEX max = 4000000000 donc DEC max = 274877906944.
Or le CB405 peut traiter une variable LONG dans la limite de 2147483647.
Valeur max. Donnée Identification = 274877906944
Valeur max. variable CUBLOC = 2147483647
Après maintes modifications de programmation au niveau des conversions, je ne trouve pas le moyen de convertir une donnée ASCII (STRING) en donnée DEC (LONG ou autre type).
Le programme ci-après ne fonctionne pas, probablement dû à la mauvaise sélection du type de variable.
En effet, je souhaiterais obtenir votre précieuse aide d'analyser et de corriger le programme ci-dessous:
'============================= ============================== ============================== ==================
Const Device = CB405
Out 10,1 '|
Out 11,1 '|
Out 12,1 '| Configuration du module de lecture RFID
Out 13,0 '|
Out 14,1 '|
Dim transponder As String * 16
Dim convert(10) As Byte
Dim a As Byte
Dim i As Byte
Dim resultat As Long
Opencom 1,9600,3,30,16
Delay 500
Bclr 1,2
Delay 2500
On Recv1 Gosub GETRFID
Set Until 1,16,10
Do
Loop
GETRFID:
If Blen(1,0) > 0 Then ' Si buffer présente sur COM1
a=Blen(1,0)
transponder=Right(Getstr(1,a), 10) ' Recuperer les 10 dernieres caracteres de la chaîne
Debug "ASCII:",transponder,Cr
For i= 0 To 9
If Dec(Asc(transponder_A(10-i)))<65 Then 'Si ASCII de rang(10-i) situé entre 0 et 9 alors
convert(i)=(Dec(Asc(transponde r_A(10-i))))-48 'conversion ASCII en DEC
Else
convert(i)=(Dec(Asc(transponde r_A(10-i))))-55 'conversion ASCII en DEC si ASCII de rang(10-i) entre A et F
Endif
resultat=resultat+((convert(i) *16^i))
Next
Debug "DEC:",Dp((transponder),12,1), Cr
End If
Return
end
'============================= ============================== ============================== ==================
D'avance, je vous remercie infiniment de votre disponibilité de consulter ce message et éventuellement proposer votre résolution de mon problème.
-----