我想用以下代码读取DS18B20传感器数据:
filepath = "/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves"
with open(filepath) as fp:
sensor=fp.readline()
while sensor:
print("Sensor: {}".format(sensor.strip()))
with open("/sys/bus/w1/devices/" + sensor.strip() + "/w1_slave") as fp1:
sensor_data = fp1.read()
print(sensor_data.strip())
sensor=fp.readline()
问题在于,while循环永远不会移至下一行,而是继续在第一行循环。
我在这里想念什么?
PS。我对python完全陌生,这是我的第一个python代码
答案 0 :(得分:1)
由于传感器在循环中未更改,请尝试此操作
filepath = "/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves"
with open(filepath) as fp:
sensor = fp.readline()
while (sensor):
print("Sensor: {}".format(sensor.strip()))
with open("/sys/bus/w1/devices/" + sensor.strip() + "/w1_slave") as fp1:
sensor_data = fp1.read()
print(sensor_data.strip())
sensor=fp.readline()
答案 1 :(得分:1)
如评论中所述,问题是sensor
从未在循环内得到更新。它不断循环读取第一个读取值。可以通过缩进代码的最后一行来更正此问题。
我建议使用for
循环。当我们简单地遍历文件处理程序时,我们遍历文件中的行。
with open(filepath) as fp:
for sensor in fp:
print("Sensor: {}".format(sensor.strip()))
with open("/sys/bus/w1/devices/" + sensor.strip() + "/w1_slave") as fp1:
sensor_data = fp1.read()
print(sensor_data.strip())