我需要一个界面画的工具,包含选择串口,波特率,连接,点击连接后界面打印消息,用python写一下
时间: 2024-03-12 10:48:12 浏览: 104
串口工具.zip_Tkinter_python_python tkinter_python串口工具_tkinter打印串口
5星 · 资源好评率100%
您可以使用Python的Tkinter模块来创建一个GUI界面,并使用pyserial模块来连接串口并发送/接收数据。以下是一个简单的示例代码,可以满足您的需求:
```python
import tkinter as tk
import serial
class SerialGUI:
def __init__(self, master):
self.frame = tk.Frame(master)
self.frame.pack()
# 创建串口选择下拉框
self.port_label = tk.Label(self.frame, text='选择串口')
self.port_label.grid(row=0, column=0)
self.port_var = tk.StringVar()
self.port_var.set('COM1')
self.port_select = tk.OptionMenu(self.frame, self.port_var, 'COM1', 'COM2', 'COM3', 'COM4')
self.port_select.grid(row=0, column=1)
# 创建波特率选择下拉框
self.baud_label = tk.Label(self.frame, text='选择波特率')
self.baud_label.grid(row=1, column=0)
self.baud_var = tk.StringVar()
self.baud_var.set('9600')
self.baud_select = tk.OptionMenu(self.frame, self.baud_var, '9600', '115200')
self.baud_select.grid(row=1, column=1)
# 创建连接按钮
self.connect_button = tk.Button(self.frame, text='连接', command=self.connect)
self.connect_button.grid(row=2, column=0)
# 创建消息显示框
self.text_frame = tk.Frame(self.frame)
self.text_frame.grid(row=3, column=0, columnspan=2)
self.text = tk.Text(self.text_frame, height=10, width=50)
self.text.pack(side=tk.LEFT, fill=tk.BOTH)
self.scrollbar = tk.Scrollbar(self.text_frame, orient=tk.VERTICAL, command=self.text.yview)
self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
self.text.config(yscrollcommand=self.scrollbar.set)
def connect(self):
# 获取串口和波特率
port = self.port_var.get()
baud = int(self.baud_var.get())
# 连接串口
try:
self.ser = serial.Serial(port, baud, timeout=0.5)
except serial.SerialException:
self.text.insert(tk.END, '连接失败\n')
return
# 显示连接成功消息
self.text.insert(tk.END, '已连接串口 {},波特率 {}\n'.format(port, baud))
# 启动接收线程
self.receive_thread = threading.Thread(target=self.receive)
self.receive_thread.daemon = True
self.receive_thread.start()
def receive(self):
while True:
data = self.ser.readline().decode('utf-8')
if data:
self.text.insert(tk.END, data)
root = tk.Tk()
app = SerialGUI(root)
root.mainloop()
```
说明:
- `SerialGUI` 是一个类,包含了创建GUI界面、连接串口、接收数据等方法。
- 在 `__init__` 方法中,创建了串口选择下拉框、波特率选择下拉框、连接按钮和消息显示框。
- `connect` 方法用于连接串口,获取下拉框中选择的串口和波特率,尝试连接串口,并显示连接成功/失败的消息。
- `receive` 方法是一个线程函数,用于接收串口数据,并将数据显示在消息显示框中。
- 在主程序中,创建了一个 `Tk` 对象和一个 `SerialGUI` 对象,并通过 `mainloop` 方法进入事件循环。
注意事项:
- 在运行代码之前,需要先安装 `pyserial` 模块。可以使用 `pip install pyserial` 命令进行安装。
- 如果您使用的是Windows系统,串口名称应该是类似于 `COM1`、`COM2` 这样的格式。如果您使用的是Linux系统,串口名称应该是类似于 `/dev/ttyUSB0`、`/dev/ttyACM0` 这样的格式。您需要根据实际情况修改代码中的串口名称。
阅读全文