Programación de puerto serie: cómo convertir números de punto flotante a tipo de byte hexadecimal en VB
La conversión a VB es un poco molesta.
Un fragmento de código que he creado antes es el siguiente (verificado):
Public Function funSignSngTo4Byt(SingleData As Single) As Boolean
'Bit alto primero, bit bajo último
Dim i, d como entero
Dim PorN como byte
Dim ExpVal, temp As Long
Dim FraVal, t1 As Long
Dim SingleFra, tempval As Single
Si SingleData = 0 Entonces
Para i = 0 a 3
gbytBinData(i) = 0 p >
Siguiente i
Salir de la función
Finalizar si
Si SingleData gt = 0 Then 'Sign bit
PorN; = 0
Else
PorN = amp H80
SingleData = -1 * SingleData 'se convierte en un número positivo
End If< / p>
ExpVal = Int(Log(SingleData) / Log(2)) 'Índice
Si ExpVal gt 128 Entonces
funSignSngTo4Byt = False
<; p > Función de salidaFinalizar si
Si ExpVal = 127 Entonces
SingleFra = SingleData / (2 ^ ExpVal)
De lo contrario
p>SingleFra = SingleData / (2 ^ ExpVal) - 1
End If
FraVal = Int(SingleFra * 128 * 256 * 256) Y amp; HFFFFFF p>
ExpVal = ExpVal 127
gbytBinData(0) = PorN ExpVal \ 2
gbytBinData(3) = FraVal Y HFF
FraVal = Int(FraVal \ 256)
gbytBinData(2) = FraVal Mod 256
FraVal = FraVal \ 256
gbytBinData(1) = ( FraVal Mod 256 ) O ((ExpVal Y 1) * 128)
Función Final