我在树莓派中使用python 3.6中的tkinter在窗口中间显示一个蓝色方块。每次点击时,蓝色方块应消失,并在2秒钟后在另一个随机位置重新出现。
我需要在raspberry pi的串口从RFID扫描仪读取信息后启动代码。我的想法是,我的猫将通过包含馅饼和触摸屏的盒子的门,RFID读取动物的芯片并开始上述步骤。如果整整一分钟没有发生交互,屏幕会变回黑色,任务再次开始收听串口,直到猫最终回来并且一切都重新开始。
以下是代码的简化版本
try:
import Tkinter as TK
except:
import tkinter as TK
import random as RAN
class THR:
def __init__(self, root):
self.root = root
self.root.config(background='black')
self.screenYpixels = 600
self.screenXpixels = 1024
self.ITI = 2000
self.background = TK.Canvas(root, width=1024, height=600, bg='black',
bd=0, highlightthickness=0, relief='ridge')
self.background.pack()
self.newtrial()
def newtrial(self):
self.xpos = RAN.randrange(200, 1000)
self.ypos = RAN.randrange(100, 500)
self.stimulus = TK.Canvas(root,width=100,height=100,bg='blue', bd=0,
highlightthickness=0, relief='ridge')
self.stimulus.place(x=self.xpos, y=self.ypos, anchor="c")
self.stimulus.bind("<Button-1>", self.response)
self.exitbutton()
def response(self, event):
self.stimulus.place_forget()
self.intertrialinterval()
def intertrialinterval(self, *args):
self.root.after(self.ITI,self.newtrial)
def exitbutton(self):
self.exitButton = TK.Button(self.root, bg="green")
self.exitButton.place(relx=0.99, rely=0.01, anchor="c")
self.exitButton.bind("<Button-1>", self.exitprogram)
def exitprogram(self, root):
self.root.quit()
root = TK.Tk()
THR(root)
root.mainloop()
这里有一些代码,我设法将它们放在一起,从植入的芯片中读取猫的ID
import serial
import struct
import binascii
import os
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate = 19200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
while 1:
if ser.inWaiting() > 0:
while ser.inWaiting() > 0:
i = ser.readline()
catID = binascii.b2a_hex(i)
catID = catID[10:20]
print(catID)
如何正确设置代码以实现连续,独立的系统: