我试图用python创建一个程序,该程序读取串行端口,然后解码接收到的信息(在这种情况下为GPS坐标和超声波传感器),然后我需要创建一些“ if循环”来保存将此串行数据转换为变量,但是在我看来,我的if语句不太好,下面附上代码:
import serial
Ard = serial.Serial(port='COM5', baudrate=9600,
bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, timeout=2)
try:
Ard.isOpen()
print("Conexion con el puerto serial: COM5, establecida satisfactoriamente!\n")
except:
print("Error")
exit()
if (Ard.isOpen()):
try:
while (1):
aux = Ard.readline()
a = aux.decode('utf-8')
print(a)
if a == '1':
print("It works")
lat = float(a)
except Exception:
print("It doesn't work")
else:
print("Port is not opening")
我尝试不使用UTF-8,但是使用a = float(Ard.readline())
,它正在工作(至少将串行变量打印为float),但是现在它不起作用,并且它从未进入if循环,我尝试了if { {1}}可以正常工作,所以事情是我不知道变量a != 1
的解码或类型是什么,我需要将其浮点。我正在从arduino UNO中读取内容,并且正在将pycharm用作pyserial和3.7解释器的python IDE,请帮助我。