以python转义符号进行串行读取

问题描述 投票:0回答:2

你好朋友,我需要编写一些脚本以确保arduino模拟引脚上的功耗较低,并在python上的计算机上读取它。我写了简单的脚本,这使我可以从USB读取串行数据,所以在这方面我没问题,我可以读取0.00-25.00的范围,在模拟引脚上具有相等的功率,但是我无法使脚本向我显示我希望的数据。

import serial
import time
import sys
#ser = serial.Serial('/dev/ttyUSB0',9600) # Linux
ser = serial.Serial('COM13', 9600, timeout=0) # Windows
ser.flushInput()
ser.flushOutput()

while True:
  data1 = ser.readline()

  if data1 == 2.54:
      print ("low")

  elif data1 == 2.69:
      print ("hi")

  elif data1 == 2.57:
      print ("center")

  else:
      print (data1)
      time.sleep(1)

某些东西我写错了,但脚本没有显示出低,中,高,值,然后它丰富了。请您的帮助

python arduino usb
2个回答
0
投票

在我的经验中,if data1 == 2.54的范围非常有限,除非您让Arduino进行四舍五入并将其发送值为2.54,否则值将略有跳跃,否则使用>=会更好。要解码接收到的数据,您可以使用data1.decode(),这将阻止您获取格式为b'10 \ r \ n'的编码字符串,而将得到10。这是我编写代码的方式。

data1 = ser.readline()
data1 = data1.decode()
if data1 >= 20:
    print ("high")

elif data1 >= 15:
    print ("medium")

elif data1 >= 10:
    print ("low")

else:
    print("the value is below 10")
    print (data1)
  time.sleep(1)

希望这会有所帮助。


0
投票

我找到解决方案,如果有人需要它:

if (data1.strip() == '2.54'):

对我来说很完美,答案在这里找到:Python checking for serial string in If statement,非常感谢#micromoses

© www.soinside.com 2019 - 2024. All rights reserved.