玩转串口助手:QT Creator + Python实战宝典
2023-06-14 07:10:54
Python+PySide2+QT开发串口助手:打造你的串口通信利器
在当今科技飞速发展的时代,串口通信已经成为工业自动化、物联网等多个领域的必备技术。它为远程设备之间的数据传输提供了便捷的方式。为了帮助开发者快速上手串口开发,本文将手把手教你使用Python、PySide2和QT Creator打造一个功能强大的串口助手。
1. 安装开发环境和库
要开始串口助手之旅,你首先需要安装以下环境和库:
- Python 3.6或更高版本
- PySide2库(使用pip install pyside2安装)
- QT Creator(从官方网站下载安装包)
2. 创建QT项目
安装好开发环境后,打开QT Creator,新建一个项目。选择QT Widgets Application模板,并为你的项目取个响亮的名字。
3. 添加串口库
为了在项目中使用串口功能,你需要在.pro文件中添加以下内容:
LIBS += -L$$PWD/../../PySide2/Lib -lPySide2
4. 编写代码
项目的核心代码位于main.py文件中。在文件中粘贴以下代码:
# 导入必要的模块
import sys
from PySide2 import QtCore, QtGui, QtWidgets
# 定义串口类
class SerialPort(QtCore.QObject):
# 定义数据接收信号
dataReceived = QtCore.Signal(bytes)
def __init__(self, portName):
super().__init__()
# 创建串口对象
self.port = QtCore.QSerialPort(self)
# 设置串口参数
self.port.setPortName(portName)
self.port.setBaudRate(9600)
self.port.setDataBits(QtCore.QSerialPort.Data8)
self.port.setParity(QtCore.QSerialPort.NoParity)
self.port.setStopBits(QtCore.QSerialPort.OneStop)
self.port.setFlowControl(QtCore.QSerialPort.NoFlowControl)
# 连接错误处理和数据接收槽函数
self.port.errorOccurred.connect(self.handleError)
self.port.readyRead.connect(self.readData)
def openPort(self):
# 打开串口
if not self.port.isOpen():
self.port.open(QtCore.QIODevice.ReadWrite)
def closePort(self):
# 关闭串口
if self.port.isOpen():
self.port.close()
def writeData(self, data):
# 写入数据到串口
self.port.write(data)
def readData(self):
# 读取串口数据
data = self.port.readAll()
# 发射数据接收信号
self.dataReceived.emit(data)
def handleError(self, error):
# 处理串口错误
print(error)
# 定义主窗口类
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题和大小
self.setWindowTitle("串口助手")
self.resize(640, 480)
# 创建状态栏
self.statusBar = QtWidgets.QStatusBar()
self.setStatusBar(self.statusBar)
# 创建串口对象并打开串口
self.serialPort = SerialPort("COM3")
self.serialPort.dataReceived.connect(self.displayData)
self.serialPort.openPort()
# 创建中央窗口小部件
self.centralWidget = QtWidgets.QWidget()
self.setCentralWidget(self.centralWidget)
# 创建网格布局
self.gridLayout = QtWidgets.QGridLayout()
self.centralWidget.setLayout(self.gridLayout)
# 创建文本编辑框
self.textEdit = QtWidgets.QTextEdit()
self.gridLayout.addWidget(self.textEdit, 0, 0, 1, 2)
# 创建输入行编辑器
self.lineEdit = QtWidgets.QLineEdit()
self.gridLayout.addWidget(self.lineEdit, 1, 0)
# 创建发送按钮
self.sendButton = QtWidgets.QPushButton("发送")
self.sendButton.clicked.connect(self.sendData)
self.gridLayout.addWidget(self.sendButton, 1, 1)
def displayData(self, data):
# 在文本编辑框中显示接收到的数据
self.textEdit.append(data.decode())
def sendData(self):
# 获取输入的数据并发送到串口
data = self.lineEdit.text().encode()
self.serialPort.writeData(data)
# 主函数
if __name__ == "__main__":
# 创建QApplication对象
app = QtWidgets.QApplication(sys.argv)
# 创建主窗口对象
window = MainWindow()
# 显示主窗口
window.show()
# 进入事件循环
sys.exit(app.exec_())
5. 运行程序
现在,一切准备就绪!点击QT Creator中的运行按钮,你的串口助手将跃跃欲试地等待你探索。
- 选择串口号: 在界面中选择你连接设备的串口号。
- 打开串口: 点击“打开串口”按钮,开始与设备通信。
- 发送数据: 在文本框中输入要发送的数据,然后点击“发送”按钮。
- 接收数据: 接收到的数据将显示在文本框中。
结语
恭喜你,你已经成功打造了一个功能强大的串口助手。通过它,你可以轻松地与串口设备进行数据传输和通信。为了帮助你进一步深入了解串口助手,我们准备了以下常见问题解答:
5个常见的串口助手问题解答
1. 如何更改串口参数(例如波特率)?
在MainWindow类中,修改SerialPort对象的构造函数参数,传入新的波特率和其他参数值即可。
2. 如何处理串口错误?
在SerialPort类中,handleError方法负责处理串口错误。你可以根据需要在这个方法中添加自定义错误处理逻辑。
3. 如何在串口助手界面中添加其他功能,如保存接收到的数据?
你可以根据自己的需求扩展MainWindow类,添加菜单、工具栏或其他自定义功能。
4. 如何在不同的操作系统上使用串口助手?
PySide2支持跨平台开发,因此这个串口助手可以在Windows、macOS和Linux等操作系统上运行。
5. 如何集成其他第三方库来增强串口助手功能?
你可以使用pip安装第三方库并将其导入到main.py文件中,以扩展串口助手的功能。
现在,你已经掌握了创建和使用串口助手的全部知识。发挥你的创造力,定制你的串口助手,打造最适合你项目的工具!