用于在窗口上打印串行数据的python代码。

问题描述 投票:3回答:1

我对python和pyserial非常陌生。我的电脑上安装了带有pyserial的python 2.7.4,我想在个人电脑上的单独窗口中打印串行接收到的数据。首先必须打开该窗口,然后在该窗口上打印串行数据之后。在这里,窗口必须打开一次,并且串行数据必须在窗口上连续打印,直到设备停止发送数据为止。我尝试使用此代码,但毫无价值。请有人帮我提供代码。

import serial
import Tkinter
from Tkinter import *
s = serial.Serial('COM10',9600)    # open serial port
master = Tk()
master.geometry("1360x750")        # a window pop up with width (1360) and height(750)     which exatly fits my monitor screen..

while 1:
if s.inWaiting():
text = s.readline(s.inWaiting())
frameLabel = Frame( master, padx=40, pady =40)
frameLabel.pack()
w = Text( frameLabel, wrap='word', font="TimesNewRoman 37")
w.insert(12.0,text )
w.pack()
w.configure( bg=master.cget('bg'), relief='flat', state='Normal' )

mainloop()
python-2.7 tkinter pyserial
1个回答
7
投票

这里的问题是您有两个循环应不断运行:GUI的主循环和传输串行数据的循环。解决此问题的方法是启动一个新线程以接收串行端口的内容,将其放入Queue,然后定期在GUI线程中检查此队列的内容:

Queue

此代码已通过我的Pi3 ttyS0串行端口以及串行连接的PC和从属设备进行了测试:其100%可与串行连接的单个设备一起使用

© www.soinside.com 2019 - 2024. All rights reserved.