用Python做一个上位机
时间: 2023-11-19 17:07:51 浏览: 58
上位机是指连接到下位机或控制器的计算机,用于监视和控制下位机或控制器的运行。在Python中,可以使用PyQt、Tkinter等库来创建图形用户界面(GUI)并与下位机进行通信。
下面是一个简单的示例,演示如何使用Python和PyQt创建一个简单的串口通信的上位机界面:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QTextEdit
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建串口
self.serial_port = QSerialPort()
# 创建GUI
self.setGeometry(100, 100, 400, 300)
self.setWindowTitle("Serial Port Communication")
# 创建文本框以显示接收到的数据
self.text_box = QTextEdit(self)
self.text_box.setReadOnly(True)
self.text_box.setGeometry(10, 10, 380, 200)
# 创建按钮以连接/断开串口
self.button = QPushButton(self)
self.button.setText("Connect")
self.button.setGeometry(10, 220, 100, 50)
self.button.clicked.connect(self.toggle_serial_port)
def toggle_serial_port(self):
if not self.serial_port.isOpen():
# 打开串口
self.serial_port.setPortName("COM3") # 设置串口名称
self.serial_port.setBaudRate(QSerialPort.Baud9600) # 设置波特率
self.serial_port.open(QSerialPort.ReadWrite) # 打开串口
self.button.setText("Disconnect")
self.serial_port.readyRead.connect(self.read_data) # 读取串口数据
else:
# 关闭串口
self.serial_port.close()
self.button.setText("Connect")
def read_data(self):
data = self.serial_port.readAll().data().decode() # 读取数据
self.text_box.append(data) # 在文本框中显示数据
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
该示例创建了一个窗口,包括一个文本框和一个按钮。当点击按钮时,程序会连接到COM3串口,并在文本框中显示接收到的数据。当再次点击按钮时,程序会断开串口连接。
需要注意的是,该示例仅适用于Windows系统。对于其他操作系统,需要将串口名称和波特率设置为相应的值。