Преобразование байтов в целое число в Python - PullRequest
2 голосов
/ 27 декабря 2011

Мне нужна помощь в сохранении целочисленного типа данных через последовательную связь. Моя установка прямо сейчас - это микроконтроллер Arduino, считывающий датчик температуры, который выводит число с плавающей точкой через модуль XBee через последовательный порт, который выглядит следующим образом: например, 76,82.

Приемник XBee подключен к моему компьютеру, на котором программа на Python читает, используя метод readline() из последовательного модуля. Однако, когда я делаю readline(), я получаю b'76.66\r\n'. Как удалить все символы и просто сохранить цифры в исходном виде?

Вот мой код Python:

import serial

ser = serial.Serial(6)

while True:
    x = ser.readline();
    print(x)

Вот мой код для Arduino:

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

DeviceAddress Thermometer = { 0x28, 0x36, 0x0F, 0xB0, 0x02, 0x00, 0x00, 0xF0 };

void setup(void)
{
    Serial.begin(9600);

    sensors.begin();
    sensors.setResolution(Thermometer, 12);
}

void printTemperature(DeviceAddress deviceAddress)
{
    float tempC = sensors.getTempC(deviceAddress);
    Serial.println(DallasTemperature::toFahrenheit(tempC));
}

void loop(void)
{
    delay(5000);
    sensors.requestTemperatures();

    printTemperature(Thermometer);
}

Ответы [ 2 ]

4 голосов
/ 27 декабря 2011

Вы ищете это?

>>> a = b'76.66\r\n'
>>> float(a)
76.66

РЕДАКТИРОВАТЬ: Если под "сохранить исходный тип данных" вы имеете в виду "сохранить его как строку":

>>> a.strip()
'76.66'
3 голосов
/ 27 декабря 2011

Чтобы преобразовать в число с плавающей точкой:

float(b'76.66\r\n')

Чтобы округлить до целого числа:

math.floor(float(b'76.66\r\n'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...