Python 串口助手:创建多数据发送模块并支持十六进制数据
以下是一个示例的串口助手代码,使用 Python 的 tkinter 库来创建基本的 UI 界面,并使用 pyserial 库来进行串口通信和数据发送。
import tkinter as tk
import serial
class SerialAssistant:
def __init__(self, master):
self.master = master
self.master.title('Serial Assistant')
# 创建串口选择下拉菜单
self.port_label = tk.Label(master, text='Port:')
self.port_label.grid(row=0, column=0)
self.port_select = tk.StringVar(master)
self.port_select.set('COM1') # 默认选择COM1
self.port_menu = tk.OptionMenu(master, self.port_select, 'COM1', 'COM2', 'COM3', 'COM4')
self.port_menu.grid(row=0, column=1)
# 创建波特率输入框
self.baud_label = tk.Label(master, text='Baud Rate:')
self.baud_label.grid(row=1, column=0)
self.baud_entry = tk.Entry(master)
self.baud_entry.insert(0, '9600') # 默认波特率为9600
self.baud_entry.grid(row=1, column=1)
# 创建数据发送模块
self.modules = []
self.module_frame = tk.Frame(master)
self.module_frame.grid(row=2, column=0, columnspan=2)
self.add_module_button = tk.Button(master, text='Add Module', command=self.add_module)
self.add_module_button.grid(row=3, column=0, columnspan=2)
# 创建发送按钮
self.send_button = tk.Button(master, text='Send', command=self.send_data)
self.send_button.grid(row=4, column=0, columnspan=2)
# 打开串口
self.serial = None
self.open_serial()
def add_module(self):
module = tk.Frame(self.module_frame)
module.pack()
data_label = tk.Label(module, text='Data:')
data_label.grid(row=0, column=0)
data_entry = tk.Entry(module)
data_entry.grid(row=0, column=1)
self.modules.append(data_entry)
def send_data(self):
if self.serial is not None and self.serial.is_open:
for module in self.modules:
data = module.get()
if data:
self.serial.write(bytes.fromhex(data))
def open_serial(self):
port = self.port_select.get()
baud = int(self.baud_entry.get())
try:
self.serial = serial.Serial(port, baud, timeout=0)
print(f'Serial port {port} opened successfully.')
except Exception as e:
print(f'Failed to open serial port {port}: {str(e)}')
if __name__ == '__main__':
root = tk.Tk()
assistant = SerialAssistant(root)
root.mainloop()
运行以上代码,将会打开一个窗口,可以选择串口和波特率,并添加多个数据发送模块。点击 Send 按钮后,程序将会将十六进制数据发送到已选择的串口中。请注意,需要在代码中根据实际的串口号进行选择。
原文地址: https://www.cveoy.top/t/topic/pkjS 著作权归作者所有。请勿转载和采集!