返回顶部
首页 > 资讯 > 后端开发 > Python >python + pyqt5制作一个串口助手
  • 803
分享到

python + pyqt5制作一个串口助手

python 串口助手python pyqt5串口助手python pyqt5 2023-05-14 08:05:50 803人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、背景1.1、开发流程图二、前提2.1、关于环境2.2、关于源码三、步骤3.1、使用pyQt创建一个.ui界面并生成.py文件3.2、创建两个.py文件,一个用来继承ui界面生

一、背景

串口助手是串口通信使用的工具。为整合知识,打算做个串口助手。

1.1、开发流程图

如下图1:

图1

二、前提

2.1、关于环境

操作系统:win 10

编辑器:PyCharm edu

语言及版本:python 3.8

使用的库:pyqt5、sys、time等等库

实现思路:需要实现什么功能就做什么功能,最后把功能整合在一起

前提:在pycharm 中配置好pyqt及其工具

最终实现的功能:串口选择、串口状态显示、发送数据、定时发送发送区数据(定时时间可修改)、接收数据、数据显示(ASCII)、数据显示自动换行、数据显示显示时间、清除接收区

2.2、关于源码

源码比较多,需要源码借鉴的评论区留言,私聊我,进行源码分享。

三、步骤

3.1、使用pyqt创建一个.ui界面并生成.py文件

如下图2:

图2

3.2、创建两个.py文件,一个用来继承ui界面生成的.py类,一个用来实现各种功能

如下图3:

图3

3.3、各个功能代码

3.3.1、打开串口

def open_port(port_name, baudrate, bytesize, stop_bit, parity):
    ser = serial.Serial(
        port = port_name,
        baudrate=baudrate,
        bytesize=bytesize,
        stopbits=stop_bit,
        parity=parity,
        rtscts=False,
        xonxoff=False,
        timeout=None,
        write_timeout=None
    )
    return ser

3.3.2、关闭串口

    def close_port(self):
        if self.current_port is not None:
            self.time.stop()
            self.serial_thread.ser = None
 
            self.current_port.close()
 
            self.current_port = None
 
            self.ui.port_status.setText("closed")
            self.ui.open_port.setDisabled(False)
            self.ui.send_data.setDisabled(True)
            self.ui.close_port.setDisabled(True)

3.3.3、获取串口号

import serial
import serial.tools.list_ports
 
def serial_port():
    port_list = []
    portlist  = list(serial.tools.list_ports.comports())
    for port in portlist:
        port_list.append(port.device)
    return port_list

3.3.4、发送数据

    def send_data(self):
        if self.ui.send_select.isChecked():
            timer = self.ui.send_time.value()
            self.time.start(timer)
        else:
            self.time.stop()
        data = self.ui.input_data.toPlainText()
        print("这是发送的数据:"+data)
        self.current_port.write(data.encode('gbk'))

3.3.5、接收数据

class SerialThread(QThread):
    data_arrive_signal = pyqtSignal()
 
    def __init__(self, ser=None):
        super().__init__()
        self.ser = ser
        self.data = ''
 
    def run(self):
        while True:
            if self.ser and self.ser.in_waiting:
                self.data += self.ser.read_all().decode('gbk')
                print(self.data)
                self.data_arrive_signal.emit()

3.3.6、数据显示

    def show_data(self):
        self.recive_data = self.serial_thread.data
        self.zdhh_data += self.recive_data
        now_time = datetime.datetime.now()
 
        if self.ui.zdhh.isChecked():
            self.zdhh_data += '\n'
            self.ui.show_ser_data.setText(self.zdhh_data)
            print("这里是显示的数据:"+self.zdhh_data)
 
        if self.ui.show_time.isChecked():
            print(self.ui.show_time.isChecked())
            time_data = str(now_time) + self.zdhh_data
            print(time_data)
            self.ui.show_ser_data.setText(time_data)
 
        if self.ui.zdhh.isChecked() and self.ui.show_time.isChecked():
            self.zdhh_data += '\n'
            time_data = str(now_time) + self.zdhh_data
            self.ui.show_ser_data.setText(time_data)
        else:
            self.ui.show_ser_data.setText(self.recive_data)
            print("这里是显示的数据:"+self.recive_data)

3.4、qtdersigner界面

如下图4:

图4

3.5、美化后运行的程序

如下图5:

图5

3.6、打包.py为.exe

如下图6:

图6

3.7、打包为.exe后运行

如下图7:

图7

3.8、串口测试连接图

如下图8:

两个串口的RXD和TXD需要互接,进行数据的互传,在测试时这样使用比用单片机发数据更快。

四、结果

4.1、代码运行结果

同图6、7:

4.2、打包后运行结果

同图6、7:

4.3、将.py文件-->.exe文件可能遇到的问题

4.3.1、UPX is not available

解决办法:点这里

4.3.2、pip命令版本不匹配,需要升级pip版本

下载pyinstaller,在cmd命令行出现报错,会有提示建议,输入提示建议的命令即可。

到此这篇关于Python + pyqt5制作一个串口助手的文章就介绍到这了,更多相关python 串口助手内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python + pyqt5制作一个串口助手

本文链接: https://lsjlt.com/news/203038.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 制作一个串口助手 | python + pyqt5
    目录 一、背景 1.1、开发流程图 二、前提 2.1、关于环境 2.2、关于源码 三、步骤 3.1、使用pyqt创建一个.ui界面并生成.py文件 3.2、创建两个.py文件,一个用来继承ui界面生成的.py类,一个用来实现各种功能 3.3...
    99+
    2023-09-26
    python qt
  • python + pyqt5制作一个串口助手
    目录一、背景1.1、开发流程图二、前提2.1、关于环境2.2、关于源码三、步骤3.1、使用pyqt创建一个.ui界面并生成.py文件3.2、创建两个.py文件,一个用来继承ui界面生...
    99+
    2023-05-14
    python 串口助手 python pyqt5串口助手 python pyqt5
  • 使用python+Pyqt5实现串口调试助手
    python可以利用serial模块来和串口设备进行485或者232通讯。 当然,网上这类串口调试助手的小程序有很多,不过这些程序要么是要收费,只能试用30天,要么是不好用。 况且...
    99+
    2024-04-02
  • Python+PyQt5制作一个图片查看器
    目录前言实现方式测试前言 在 PyQt 中可以使用很多方式实现照片查看器,最朴素的做法就是重写 QWidget 的 paintEvent()、mouse...
    99+
    2024-04-02
  • 从零开始编写一个上位机(串口助手)QT Creator + Python
    提示:本博客作为学习笔记,有错误的地方希望指正,此文可能会比较长,作为学习笔记的积累,希望对来着有帮助。   绪论:笔者这里使用的是QTCreator和Python来实现一个简单的串口上位机的开发的简...
    99+
    2023-09-22
    python qt 开发语言
  • Python+PyQt5如何制作一个图片查看器
    这篇文章将为大家详细讲解有关Python+PyQt5如何制作一个图片查看器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现方式一个最基本的照片查看器应该具有以下功能:载入图像缩放图像在窗口尺寸小于图像时...
    99+
    2023-06-29
  • PyQt5+serial模块实现一个串口小工具
    目录串口简述serial模块参数方法使用模板串口工具示例串口简述 异步串行是指UART(Universal Asynchronous Receiver/Transmitter),通用...
    99+
    2023-01-13
    PyQt5 serial串口工具 PyQt5 串口工具 PyQt5 serial串口 PyQt5 serial串口
  • 基于PyQt5制作一个截图翻译工具
    目录功能介绍UI 界面截图翻译文字识别全局热键(快捷键)托盘管理主代码功能介绍 1.翻译功能 2.截图功能(快捷键 + 截图存储到剪切板中) 3.文字识别OCR(基于百度API的文字...
    99+
    2024-04-02
  • 基于PyQT5制作一个课堂点名系统
    刷抖音的时候发现一个老师在用的课堂点名系统。用PyQt5实现了一下同款,导入学生姓名,测试了一下完美运行。 操作效果展示: 完整源代码块还是放在了文章的最后面 使用的时候准备好学生...
    99+
    2024-04-02
  • 基于PyQt5制作一个windows通知管理器
    前几天看到一个python框架win10toast,它可以用来做windows的消息通知功能。通过设定通知的间隔时间来实现一些事件通知的功能,比如可以可以提醒一头扎进代码编写过程的我...
    99+
    2024-04-02
  • 基于PyQT5制作一个桌面摸鱼工具
    目录前言按键功能控制主要功能核心代码前言 现在我能一整天都严肃地盯着屏幕,看起来就像在很认真地工作, 利用摸鱼,打开小说,可实行完美摸鱼,实时保存进度 用PYQT5 Mock一个摸鱼...
    99+
    2024-04-02
  • 基于PyQt5制作一个动态指针时钟
    想实现这样一个功能,然后pyqt5中又没有现成的组件可以使用,于是就想着只能通过绘图的方式来实现。说到绘图的话,turtle框架无疑是最常见的选择,但其实通过pyqt5的QPain...
    99+
    2024-04-02
  • 基于PyQt5制作一个猜数字小游戏
    开始之前,直接来看一下实现后的效果。想自己实现或者需要源码的童鞋直接进场... 将PyQt5的相关模块直接导入即可。 from PyQt5.QtGui import * from ...
    99+
    2024-04-02
  • 基于PyQt5制作一个PDF文件合并器
    操作说明:选择多个PDF文件,执行完合并后会生成一个新的PDF文件,这个新的PDF文件包含所有源PDF文件的页面。 将相关的三方模块导入到代码块中... from PyQt5.Qt...
    99+
    2024-04-02
  • 基于PyQt5制作一个表情包下载器
    每次和朋友聊天苦于没有表情包,而别人的表情包似乎是取之不尽、用之不竭。作为一个程序员哪能甘愿认输,于是做了一个表情包下载器供大家斗图。 首先,还是介绍一下设计思路吧,和我们之前做的百...
    99+
    2024-04-02
  • 基于PyQt5制作一个群发邮件工具
    演示示例使用QQ邮箱发送邮件,先获取自己的QQ邮箱的授权码。因为后面发送邮件时需要使用自己的授权码作为邮箱的密码登录邮箱最后达到发送邮件的目的。 将UI处理的相关的界面包导入进来...
    99+
    2024-04-02
  • 基于PyQT5制作一个二维码生成器
    个性化二维码的exe桌面应用的获取方式我放在文章最后面了,注意查收。通过执行打包后的exe应用程序可以直接运行生成个性化二维码。 开始之前先来看一下通过二维码生成器是如何生成个性化二...
    99+
    2024-04-02
  • 天气变冷了,用Python给爸妈制作一个天气提醒小助手
    天气慢慢变冷了,和父母聊天中得知,他们查看每天的天气预报不太方便,我记得小时候,每晚 19:30 左右,一家人都要守在电视机旁边收听第二天的天气情况。如今,对于我们年轻人来说,获取天气情况很方便,但是对于我们不擅长用手机的父母来说,还是很吃...
    99+
    2023-06-02
  • 怎么用Python制作GitHub消息助手
    这篇文章将为大家详细讲解有关怎么用Python制作GitHub消息助手,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在互联网2.0时代,工程师解决业务问题主要依赖的是自己掌握的各种工具和软件伴随着席卷全球...
    99+
    2023-06-06
  • 基于PyQT5制作一个敏感词检测工具
    设计思路:根据敏感词库文件筛选,查看输入的文本中是否包含敏感词汇。从而过滤出相关的敏感词。 导入应用相关的模块。 import os import logging import s...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作