Проблемы с преобразованием формулы из Javascript в Python - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть этот JS-код для преобразования входных байтов в температуру.Я пытаюсь повторить это в Python.Основное отличие заключается в том, что в JS я имел дело с Uint8Array.Теперь я вручную сохранил байты с помощью приложения LightBlue для iOS.И мне нужно преобразовать текст в байты в температуру.

JS:

var bufferA = new Uint8Array(dataIncoming);

var a = ((bufferA[3]) | (bufferA[4]) << 8);
var b = ((bufferA[5]) | (bufferA[6]) << 8);
var currentTempC = ((1.0 * a) + (1.0 * b))/100.0;
var currentTempF = currentTempC * 9 / 5 + 32;

Python: Закомментированное число (175F-168F) - это фактическая температура.

bytesRaw = [
'060203671B0000', #175F
'060203991D0000', #172F
'0602031A1E0000', #171F
'060203381E0000', #169F
'060203341E0000', #168F
]

for i in range(0, len(bytesRaw)):

    #Trim and convert ascii to hex
    a = binascii.a2b_hex( bytesRaw[i][6:-6] )
    b = binascii.a2b_hex( bytesRaw[i][8:-4] )

    print(a,b)

    #Convert to int?
    a = int.from_bytes( a, byteorder='little')
    b = int.from_bytes( b, byteorder='little')

    print(a,b)

    currentTempC = ((1.0 * a) + (1.0 * b))/100.0;
    currentTempF = currentTempC * 9.0 / 5.0 + 32.0;

    print('{0:4.3f}C'.format(currentTempC))
    print('{0:4.3f}F'.format(currentTempF))

Результаты:

b'g' b'\x1b'
103 27
1.300C
34.340F


b'\x99' b'\x1d'
153 29
1.820C
35.276F


b'\x1a' b'\x1e'
26 30
0.560C
33.008F


b'8' b'\x1e'
56 30
0.860C
33.548F
...