【发布时间】:2015-10-25 17:28:56
【问题描述】:
我目前正在开发一个需要串行通信和 GUI 的项目。我是 python 新手,所以我真的被卡住了,找不到任何关于此的信息,所以我想这是一个逻辑问题,但我无法弄清楚。非常感谢任何主题的帮助!
代码:
from tkinter import *
import serial, time, os
codeRead = open ('/home/riverans/Desktop/com/acticode.taws', 'r')
code = codeRead.read()
codeRead.close()
ser = serial.Serial('/dev/ttyACM0', 9600)
while 1:
serialInput = ser.readline()
if serialInput == b'1001\r\n': #Read Input 1001
file1 = open('/home/riverans/Desktop/com/I1.taws', 'w')
file1.write(code)
file1.close()
if serialInput == b'1002\r\n': #Read Input 1002
if os.path.isfile('/home/riverans/Desktop/com/I1.taws'):
os.remove('/home/riverans/Desktop/com/I1.taws')
if serialInput == b'2001\r\n': #Read Input 2001
file2 = open('/home/riverans/Desktop/com/I2.taws', 'w')
file2.write(code)
file2.close()
if serialInput == b'2002\r\n': #Read Input 2002
if os.path.isfile('/home/riverans/Desktop/com/I2.taws'):
os.remove('/home/riverans/Desktop/com/I2.taws')
if serialInput == b'3001\r\n': #Read Input 3001
file3 = open('/home/riverans/Desktop/com/I3.taws', 'w')
file3.write(code);
file3.close()
if serialInput == b'3002\r\n': #Read Input 3002
if os.path.isfile('/home/riverans/Desktop/com/I3.taws'):
os.remove('/home/riverans/Desktop/com/I3.taws')
if os.path.isfile('/home/riverans/Desktop/com/I1.taws'): #Write Pin 10
ser.write(b'1')
if os.path.isfile('/home/riverans/Desktop/com/I2.taws'): #Write Pin 8
ser.write(b'2')
if os.path.isfile('/home/riverans/Desktop/com/I3.taws'):
ser.write(b'3')
print (serialInput)
class Window(Frame):
def __init__(self, master = None):
Frame.__init__(self, master)
self.master = master
self.init_window()
def init_window(self):
self.master.title("MISSYS")
self.pack(fill=BOTH, expand=1)
menu = Menu(self.master)
self.master.config(menu=menu)
file = Menu(menu)
file.add_command(label='Exit', command=self.client_exit)
menu.add_cascade(label='File', menu=file)
edit = Menu(menu)
edit.add_command(label='Undo')
menu.add_cascade(label='Edit', menu=edit)
button1 = Button(self, text="Turn on LED", command=self.serial_write_led)
button1.place(x=0, y=0)
button2 = Button(self, text="Turn off LED", command=self.serial_write_led2)
button2.place(x=100, y=0)
def client_exit(self):
exit()
def serial_write_led(self):
ser.write(b'1')
print("Turning on LED")
def serial_write_led2(self):
ser.write(b'2')
print("Turning off LED")
root = Tk()
root.geometry("500x300")
app = Window(root)
root.mainloop()
【问题讨论】:
-
我想我刚刚在您的
class Window中更正的缩进是由于复制粘贴错误造成的。我建议指定 为什么 这不起作用;您不能简单地粘贴代码并期望其他用户神奇地发现错误。 -
你能指出究竟是什么你的代码有问题吗?
-
@DimitrisJim 缩进不对。查看开头的
while循环。 -
错过了,现在修好了。
-
您的代码开头有一个无限循环。您将永远无法创建 Tk 对象。我不明白你到底想做什么,所以我无法建议如何纠正它。
标签: python python-3.x tkinter logic pyserial