python串口调试助手_python 串口调试工具源码

【实例简介】tkinter的GUI,pyserial模块

【实例截图】

930ed56cf25374a7724a3d5c86ce1686.png

【核心代码】

'''

if(self.Status == True):

self.ser = serial.Serial(self.port.get(), int(self.baud.get()), timeout=30)

self.Btn.set('关闭')

self.Status = False

t = threading.Thread(target=self.get_thread)

t.start()

else:

self.Btn.set('打开')

self.Status = True

self.ser.close()

'''

import tkinter as tk

from tkinter import ttk

import serial

import threading

class Scom:

def get_thread(self):

while True:

if(self.Status == False):

n = self.ser.inWaiting()

if n:

self.get_data.insert('end', self.ser.read(n).decode('utf-8'))

else:

break

print('退出线程')

def dakai(self):

if self.Status == True:

self.ser = serial.Serial()

self.ser.port = self.port.get()

self.ser.baudrate = int(self.baud.get())

self.ser.timeout = 2

self.ser.open()

if self.ser.isOpen():

self.Status = False

self.thread_read = threading.Thread(target=self.get_thread)

self.thread_read.start()

self.Btn.set('关闭')

else:

self.Status = True

self.Btn.set('打开')

self.thread_read.join()

self.ser.close()

def send(self):

self.ser.write(self.sendstr.get().encode('utf-8'))

def __init__(self):

__win = tk.Tk()

__win.title('串口工具')

__win.geometry('300x300')

__win.resizable(False, False)

tk.Label(__win, text='端口号').grid(row=1, column=1)

tk.Label(__win, text='波特率').grid(row=2, column=1)

self.port = tk.StringVar()

__plist = ttk.Combobox(__win, textvariable=self.port, width=12, state='readonly')

__plist['values'] = ('COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9')

__plist.current(0)

__plist.grid(row=1, column=2)

self.baud = tk.StringVar()

__blist = ttk.Combobox(__win, textvariable=self.baud, width=12, state='readonly')

__blist['values'] = ('9600', '19200', '38400', '115200')

__blist.current(3)

__blist.grid(row=2, column=2)

self.Btn = tk.StringVar()

self.Btn.set('打开')

tk.Button(__win, textvariable=self.Btn, command=self.dakai, width=6).grid(row=3, column=1)

tk.Button(__win, text='发送', command=self.send, width=6).grid(row=4, column=1)

self.sendstr = tk.StringVar()

tk.Entry(__win, textvariable=self.sendstr, width=20).grid(row=4, column=2)

tk.Label(__win, text='接收数据').grid(row=5, column=1)

self.frm = tk.Frame(__win)

self.frm.grid(row=6, column=2)

self.get_data = tk.Text(self.frm, height=10, width=20)

self.bar = tk.Scrollbar(self.frm)

self.bar.config(command=self.get_data.yview)

self.get_data.config(yscrollcommand=self.bar.set)

self.bar.pack(side=tk.RIGHT, fill=tk.Y)

self.get_data.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)

self.Status = True

__win.mainloop()

Scom()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值