酷代码 AI
菜单
服务商

python扫描串口,通过串口发送多条指令的gui

创建一个Python GUI应用程序来扫描可用的串口并发送多条指令,可以使用`tkinter`库来构建GUI界面,并使用`pyserial`库来处理串口通信。以下是一个示例代码: 1. 安装所需的库: ```bash pip install pyserial ``` 2. 创建Python脚本: ```python import tkinter as tk from tkinter import ttk, messagebox import serial import serial.tools.list_ports class SerialPortApp: def __init__(self, root): self.root = root self.root.title("Serial Port Control") # Create and place widgets self.create_widgets() # Initialize serial port self.ser = None def create_widgets(self): # Frame for serial port selection port_frame = ttk.LabelFrame(self.root, text="Select Serial Port") port_frame.grid(row=0, column=0, padx=10, pady=10, sticky=tk.W+tk.E) self.port_var = tk.StringVar() self.port_combobox = ttk.Combobox(port_frame, textvariable=self.port_var) self.port_combobox.grid(row=0, column=0, padx=5, pady=5) self.update_port_list() self.connect_button = ttk.Button(port_frame, text="Connect", command=self.connect_serial) self.connect_button.grid(row=0, column=1, padx=5, pady=5) # Frame for sending commands command_frame = ttk.LabelFrame(self.root, text="Send Commands") command_frame.grid(row=1, column=0, padx=10, pady=10, sticky=tk.W+tk.E) self.command_text = tk.Text(command_frame, height=10, width=40) self.command_text.grid(row=0, column=0, padx=5, pady=5) self.send_button = ttk.Button(command_frame, text="Send", command=self.send_commands) self.send_button.grid(row=1, column=0, padx=5, pady=5) # Frame for status messages status_frame = ttk.LabelFrame(self.root, text="Status") status_frame.grid(row=2, column=0, padx=10, pady=10, sticky=tk.W+tk.E) self.status_label = ttk.Label(status_frame, text="") self.status_label.grid(row=0, column=0, padx=5, pady=5) def update_port_list(self): ports = serial.tools.list_ports.comports() port_list = [port.device for port in ports] self.port_combobox['values'] = port_list def connect_serial(self): port = self.port_var.get() if not port: messagebox.showwarning("Warning", "Please select a serial port.") return try: self.ser = serial.Serial(port, baudrate=9600, timeout=1) self.status_label.config(text=f"Connected to {port}") except serial.SerialException as e: messagebox.showerror("Error", f"Failed to connect to {port}: {e}") def send_commands(self): if not self.ser or not self.ser.is_open: messagebox.showwarning("Warning", "Please connect to a serial port first.") return commands = self.command_text.get("1.0", tk.END).strip().split('\n') for command in commands: command = command.strip() if command: try: self.ser.write(f"{command}\r\n".encode('utf-8')) self.status_label.config(text=f"Sent: {command}") except serial.SerialException as e: messagebox.showerror("Error", f"Failed to send command: {e}") break if __name__ == "__main__": root = tk.Tk() app = SerialPortApp(root) root.mainloop() ``` 说明 1. 导入库:导入`tkinter`和`pyserial`库。 2. 初始化主窗口:创建主窗口并设置。 3. 创建控件: - 串口选择框:用于选择可用的串口。 - 连接按钮:点击后连接到选中的串口。 - 命令输入框:用户可以输入多条命令,每条命令一行。 - 发送按钮:点击后将输入框中的命令发送到串口。 - 状态标签:显示当前连接状态和发送状态。 4. 更新串口列表:扫描可用的串口并更新下拉列表。 5. 连接串口:尝试连接到选中的串口。 6. 发送命令:将输入框中的命令逐行发送到串口。 运行此脚本后,将弹出一个GUI窗口,用户可以选择串口并发送多条指令。 [2024-11-07 01:01:52 | AI写代码神器 | 1044点数解答]

相关提问
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]