在Python中将字节转换为整数

时间:2011-12-27 02:42:29

标签: python arduino

通过串行通信保留整数数据类型需要一些帮助。我现在的设置是一个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 个答案:

答案 0 :(得分:4)

你在找这个吗?

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

编辑:如果“保留原始数据类型”,则表示“将其保留为字符串”:

>>> a.strip()
'76.66'

答案 1 :(得分:3)

转换为浮动:

float(b'76.66\r\n')

将其舍入为int:

math.floor(float(b'76.66\r\n'))
相关问题