#! /usr/bin/env python from struct import * from Tkinter import * import os import struct from ctypes import * #from ctypes import byref import numpy #------------ leave it alone for now ------------- rtf0=open('/dev/rtf0','w') #------------------------------------------------- #typedef struct { # enum etype command; # int command_num; /* identifies command */ # int freq; /* for STEPPERS_FREQ */ # unsigned int steps_x; /* step da fare */ # unsigned int steps_y; # unsigned int steps_z; # unsigned int steps_a; # unsigned char dir; /* byte con le direzioni x y z a */ #} COMMAND_STRUCT; format='20piiiiiii' class App: def __init__(self, master): self.bit_dir_x = IntVar() self.bit_dir_y = IntVar() self.bit_dir_z = IntVar() self.bit_dir_a = IntVar() self.command_stepper_on = IntVar() self.command_stepper_go = IntVar() #Struttura del comando inviato al modulo via FIFO self.command = StringVar() self.command.set("STEPPERS_OFF") self.command_num = IntVar() self.command_num.set(1) self.step_x = IntVar() self.step_x.set(10010) self.step_y = IntVar() self.step_y.set(2340) self.step_z = IntVar() self.step_z.set(56670) self.step_a = IntVar() self.step_a.set(5320) self.direction = IntVar() self.direction.set(7) frame = Frame(master) frame.pack(fill=X) self.lbl_freq = Label(frame, text="Frequenza = ").grid(row=0, column=0) self.frequenza = IntVar() self.frequenza.set(10000) self.entry_freq = Entry(frame,textvariable=self.frequenza).grid(row=0, column=1) #self.entry_freq=StringVar() #self.entry_freq.insert(self,"0") self.hi_there = Checkbutton(frame, text="ON",variable=self.command_stepper_on, indicatoron=0,command=self.on).grid(row=0, column=2) self.lbl_step_x = Label(frame, text="Step X = ").grid(row=1, column=0) self.entry_step_x = Entry(frame,textvariable=self.step_x).grid(row=1, column=1) self.dir_x = Checkbutton(frame, text="Dir X",variable=self.bit_dir_x, indicatoron=0, command=self.command_dir_x).grid(row=1,column=2) self.lbl_step_y = Label(frame, text="Step Y = ").grid(row=2, column=0) self.entry_step_y = Entry(frame,textvariable=self.step_y).grid(row=2, column=1) self.dir_y = Checkbutton(frame, text="Dir Y",variable=self.bit_dir_y, indicatoron=0, command=self.command_dir_y).grid(row=2,column=2) self.lbl_step_z = Label(frame, text="Step Z = ").grid(row=3, column=0) self.entry_step_z = Entry(frame,textvariable=self.step_z).grid(row=3, column=1) self.dir_z = Checkbutton(frame, text="Dir Z",variable=self.bit_dir_z, indicatoron=0, command=self.command_dir_z).grid(row=3,column=2) self.lbl_step_a = Label(frame, text="Step A = ").grid(row=4, column=0) self.entry_step_a = Entry(frame,textvariable=self.step_a).grid(row=4, column=1) self.dir_a = Checkbutton(frame, text="Dir A",variable=self.bit_dir_a, indicatoron=0, command=self.command_dir_a).grid(row=4,column=2) self.hi_there = Button(frame, text="GO!",command=self.go).grid(row=5, column=2) self.button = Button(frame, text="QUIT", fg="red", command=self.esci).grid(row=5, column=0) def go(self): print "Ramp running" self.command.set("STEPPERS_GO") self.update() def esci(self): rtf0.close() root.destroy() def on(self): if self.command_stepper_on.get()== 1: self.command.set("STEPPERS_ON") print "Steppers ON" self.update() else: print "Steppers OFF" self.command.set("STEPPERS_OFF") self.update() def command_act(self): RawData=struct.pack(format, self.command.get(), self.command_num.get(), self.frequenza.get(), self.step_x.get(), self.step_y.get(), self.step_z.get(), self.step_a.get(), self.direction.get()) #print "RawData = ", RawData rtf0.write(RawData) def command_dir_x(self): self.update() def command_dir_y(self): self.update() def command_dir_z(self): self.update() def command_dir_a(self): self.update() def update(self): self.direction.set(self.bit_dir_x.get() +(self.bit_dir_y.get()*2) +(self.bit_dir_z.get()*4) +(self.bit_dir_a.get()*8)) self.command_act() print "Direzione = ", self.direction.get() print "Frequenza = ", self.frequenza.get() print "Motori = ", self.command.get() print "Dir x = ", self.bit_dir_x.get() print "Step x = ", self.step_x.get() print "Dir y = ", self.bit_dir_y.get() print "Step y = ", self.step_y.get() print "Dir z = ", self.bit_dir_z.get() print "Step z = ", self.step_z.get() print "Dir a = ", self.bit_dir_a.get() print "Step a = ", self.step_a.get() print " " root = Tk() app = App(root) root.mainloop()