问题遇到的现象和发生背景
环境:win10+python3.9+pycharm2020.2
在“pyserial基本用法学习”一节中,运行函数至要求input时,输入字符没输出decode内容,而是再次提示inpyt。
输入quit后可以正常退出
问题相关代码,请勿粘贴截图
-- coding: utf-8 --
import sys
import serial
import threading
from time import sleep
class Uart(object):
def init(self, port, baud):
self.err = 0
# open serial
try:
self.serial = serial.Serial(port, baud)
print("open serial success.")
except:
print("open serial error!")
self.err = -1
def uart_recv_thread(self):
print("start uart_recv_thread.")
while(True):
try:
recv_data_raw = self.serial.readline()
data = "DEVICE---->PC: " + recv_data_raw.decode()
print(data)
except:
print("recv data error!")
break
def start_recv_thread(self):
thread = threading.Thread(target=self.uart_recv_thread, daemon=True)
thread.start()
def send_uart_data(self, data):
self.serial.write(data.encode())
def uart_close(self):
self.serial.close()
if name == "main":
myuart = Uart("COM3", 9600)
if (0 == myuart.err):
print("Init Uart Success.")
# 如果打开串口成功,启动接收线程,准备实时的接收数据
myuart.start_recv_thread()
while(True):
input_data = input("Please input data...")
if (input_data == "quit"):
# 退出
myuart.uart_close()
break
else:
#发送数据给设备
myuart.send_uart_data(input_data)
sleep(0.01)
print("exit!")
运行结果及报错内容
程序主体正常运行,可以退出,只是在输入非quit时不打印解码内容
我的解答思路和尝试过的方法
debug,发现没执行函数“uart_recv_thread”
我想要达到的结果
希望解释原因