Python 串口操作-pyserial

这篇具有很好参考价值的文章主要介绍了Python 串口操作-pyserial。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、串口操作

import serial	# 引入 serial 库

port_list = list(serial.tools.list_ports.comports())	# 搜索串口列表

ser = serial.Serial(com, int(bps), timeout=int(timex))

ser.flushInput()	# 清空缓冲区

count = ser.inWaiting() # 获取缓冲区字符数量

str = ser.readline(ser.in_waiting) # 读取内容并回显

str = glo.ser.read(ser.in_waiting)

1 搜索串口

class getCom(QThread):
    comUpdate = pyqtSignal(list)
    port_list_orignal = []

    def run(self):
        """得到所有的串口号
        args: NONE
        return: (串口号列表: ['COM1', ...], 串口名列表: ['通信端口 (COM1)'], 串口列表: ['COM1 - 通信端口 (COM1)', ...])
        """
        while(True):
            port_list = list(serial.tools.list_ports.comports())
            if set(port_list) != set(self.port_list_orignal):
                self.port_listUpdate(port_list)
                if len(port_list) == 0:
                    print('No serial port found!')
                    exit()
                else:
                    self.comUpdate.emit(port_list)
                
    def port_listUpdate(self, port_list):
        self.port_list_orignal = port_list

2 打开串口

def serialOpen(com, bps, timex):
    """打开串口
    args: com: 串口号; bps: 波特率; timex: 超时时间
    return: ser: 串口对象
    """
    try:
        ser = serial.Serial(com, int(bps), timeout=int(timex))
        if ser.isOpen():
            print('open success')
            return ser
        else:
            print('open failed')
            return None
    except:
        print("serialOpen: 串口不存在")
        return
    finally:
        ...

3 串口数据读取

class serialRead_original(QThread):
    dateReadUpdate = pyqtSignal(str)	# 数据更新信号
    serDisconnect = pyqtSignal()	# 串口断开信号

    def run(self):
        """读取串口数据
        args: NONE
        return: NONE
        """
        print("serialRead start")
        ser.flushInput()	# 清空缓冲区
        while(isConnected):
            if serialIsOpen(ser) == False:	# 串口断开 或 不存在
                print("serialRead stop")
                self.serDisconnect.emit()
                serialClose(ser)
                break
            count = ser.inWaiting() # 获取缓冲区字符数量
            # print("count: ", count)
            if count != 0:
                str = ser.readline(ser.in_waiting) # 读取内容并回显
                # str = glo.ser.read(ser.in_waiting)
                # str -> b'' => 二进制数据
                # str = str.decode(encoding='utf-8', errors='ignore')
                self.dateReadUpdate.emit(str)
                # print('data:', data)
            sleep(1)

文章来源地址https://www.toymoban.com/news/detail-632827.html

到了这里,关于Python 串口操作-pyserial的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 清空 Docker 容器的日志文件

    删除容器中netcore控制台存储到docker日志记录  在shell命令下执行如下语句: 这个命令会执行以下操作: docker ps -aq:列出所有容器的ID(包括运行中和已停止的容器)。 docker inspect --format=\\\'{{.LogPath}}\\\':获取每个容器的日志路径。 xargs truncate -s 0:使用truncate -s 0命令清空每个日

    2024年02月10日
    浏览(13)
  • docker rabbitmq-清空queue队列数据

    执行以下命令,连接到 RabbitMQ 容器的 bash 终端: 在 RabbitMQ 容器中,使用以下命令打开 RabbitMQ 命令行管理工具: 输入以下命令,列出所有的队列: 这将显示所有队列的信息,包括队列的名称和消息数量。 确定要清空的队列名称,并使用以下命令删除该队列的所有消息: 将

    2024年02月16日
    浏览(12)
  • 清空或者删除 Docker 容器的日志文件

    删除容器中netcore控制台存储到docker日志记录  在shell命令下执行如下语句: 这个命令会执行以下操作: docker ps -aq:列出所有容器的ID(包括运行中和已停止的容器)。 docker inspect --format=\\\'{{.LogPath}}\\\':获取每个容器的日志路径。 xargs truncate -s 0:使用truncate -s 0命令清空每个日

    2024年02月04日
    浏览(15)
  • Qt5.LineEdit文本框清空操作

    1.widget.h代码如下  2.widget.cpp connect函数代码如下

    2024年02月16日
    浏览(10)
  • 误操作清空了回收站文件如何找到文件

    误操作清空了回收站文件如何找到文件

        我们在删除文件的时候,文件都是先跑到回收站里的,这样的防止我们出现误删的情况,但往往也会出现我们要恢复删除的文件却误操作清空了回收站的情况,那么误操作清空了回收站如何找到呢,下面小编给大家分享误操作清空了回收站文件找到的方法。 误操作清空了

    2024年02月01日
    浏览(13)
  • stable diffusion实践操作-复制-清空-保存提示词

    stable diffusion实践操作-复制-清空-保存提示词

    stable diffusion实践操作 stable diffusion实践操作-webUI教程 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 本章主要介绍webUI界面中的模板等用法. 主要就是下面几个按钮的用法,特别是箭头的用法,它能用来复刻别人的作品 这个箭头的作用是: 1)根据上

    2024年02月09日
    浏览(14)
  • 清空所有队列和消息的RabbitMQ操作指南

    RabbitMQ是一种功能强大的消息代理,用于在应用程序之间传递消息。有时候,我们可能需要清空RabbitMQ中的所有队列和消息,以便重新开始或进行测试。本文将介绍如何使用RabbitMQ的管理插件和AMQP协议来清空所有队列和消息。 步骤1:安装RabbitMQ管理插件 要使用RabbitMQ的管理插

    2024年02月06日
    浏览(10)
  • Vue项目商品购物车前端本地缓存逻辑(适用H5/ipad/PC端)——前端实现购物车删除商品、购物车增减数量,清空购物车功能

    Vue项目商品购物车前端本地缓存逻辑(适用H5/ipad/PC端)——前端实现购物车删除商品、购物车增减数量,清空购物车功能

    Vue3 + Vite + Ts开源后台管理系统模板 基于ElementUi或AntdUI再次封装基础组件文档 基于Element-plus再次封装基础组件文档(vue3+ts)

    2024年02月12日
    浏览(15)
  • 数据结构-----栈(栈的初始化、建立、入栈、出栈、遍历、清空等操作)

    数据结构-----栈(栈的初始化、建立、入栈、出栈、遍历、清空等操作)

    目录 前言 栈 1.定义 2.栈的特点 3.栈的储存方式 3.1数组栈 3.2链栈  4.栈的基本操作(C语言) 4.1初始化   4.2判断是否满栈 4.3判断空栈  4.4 入栈 4.5 出栈 4.6获取栈顶元素  4.7遍历栈  4.8清空栈  完整代码示例         大家好呀!今天我们开始学习新的线性表结构----栈,前面

    2024年02月06日
    浏览(17)
  • Python 清空控制台的几种方法

    Python 清空控制台的几种方法

    我们在写代码的时候经常会发现:当Python控制台输入过多的Python语句时,有时需要将这些已经输入的语句和执行结果清空,并重新开始输入Python语句。我们不再想要展现控制台上显示的内容,需要将他们 清空 ,我们该怎样做呢? 我们在Python Console中输入reset 但是这种方法也

    2024年02月09日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包