栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

话不多说,直接上代码:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728870.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号