话不多说,直接上代码:
aa为瞎写方法名,验证是否能输出与输入,实验成功.
使用线程去搞定.
计算机会有个“行缓冲”的概念,就是每一行才输出一次,不是一个字符就给你显示一个字符的。你有时间可以搜索“行缓冲”和“块缓冲”,就理解更深了。
t2 = threading.Thread(target=aa) t2.start()
import threading
import time
import serial #导入模块
def aaa():
try:
#端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
portx="COM35"
#波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
bps=115200
#超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
timex=None
# 打开串口,并得到串口对象
ser=serial.Serial(portx,bps,timeout=timex)
print("串口详情参数:", ser)
print(ser.port)#获取到当前打开的串口名
print(ser.baudrate)#获取波特率
ser.write('tail -f /var/log/iscm.log &r'.encode("utf-8"))
ser.write('tail -f /var/log/iscm_iot.log &r'.encode("utf-8"))
ser.write('tail -f /var/log/libqtrans.log &r'.encode("utf-8"))
def aa():
a = input()
ser.write(("r").encode("utf-8")) # 写数据
ser.write((a + "r").encode("utf-8")) # 写数据
while True:
if ser.in_waiting:
str1=ser.read(ser.in_waiting)
sta =str(str1)
if(sta=="exit"):#退出标志
break
else:
with open('11111111.txt', 'a') as log:
log.writelines(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ' ' + sta)
print(sta)
t2 = threading.Thread(target=aa)
# t1.start()
t2.start()
ser.close()#关闭串口
except Exception as e:
print("---异常---:",e)
原创链接在这,进行了针对自己改动:Python的串口通信(pyserial) - 东小东 - 博客园



