python多线程实现serial串口接收数据更新tkinter页面

如题,需要实现的功能是在tkinter的UI界面能根据serial接收到的数据刷新内容。

在尝试过while循环里mainloop更新、通过StringVar更新、通过update函数更新、通过after和sleep函数定时更新等操作,终于找到了正确的方法——多线程。(不排除其他某些方法我还不会用)

简版代码:

import serial,threading
import tkinter as tk
window = tk.Tk()
window.title("My window")
window.geometry('500x300')
str = tk.StringVar()
str.set('Start')
ser = serial.Serial('COM6')#我这里用到的串口是COM6,若不同注意修改
ser.baudrate=9600
ReadyToStart = True
def startButton():
    if(ReadyToStart):
        str.set('Running')
button = tk.Button(window, textvariable=str, command=startButton).grid()
OutputText = tk.Text(window, wrap=tk.WORD, width=70, height=20)
OutputText.grid()
def ReadUART():#接收串口数据
    while (True):
        try:
            idx = int.from_bytes(ser.read(1), byteorder='big', signed=False)#转化为整型数字
            OutputText.insert(tk.END, idx)
            OutputText.insert(tk.END, ' ')
            #print(idx, end='')
        except:
            print("Something wrong")
ReadUARTThread = threading.Thread(target=ReadUART)#多线程
ReadUARTThread.start()
window.mainloop()

上述代码运行后,在下位机发送数据时能在下图框内接收到。

 

小学期苦苦挣扎,完成完整的想法后再上传代码

20190905更新:

后续代码就不贴了,更需要的是想象力。
小学期快结束了,fkq是我最讨厌的老师,没有之一。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值