基本信息
源码名称:python 串口调试工具源码
源码大小:3.21KB
文件格式:.py
开发语言:Python
更新时间:2018-12-21
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
tkinter的GUI,pyserial模块

'''
        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()