欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Python的串口通信(pyserial),实现读写

时间:2023-07-25

话不多说,直接上代码:

aa为瞎写方法名,验证是否能输出与输入,实验成功.

使用线程去搞定.

计算机会有个“行缓冲”的概念,就是每一行才输出一次,不是一个字符就给你显示一个字符的。你有时间可以搜索“行缓冲”和“块缓冲”,就理解更深了。

t2 = threading.Thread(target=aa)t2.start()

import threadingimport timeimport 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) - 东小东 - 博客园

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。