Skip to main content
Sign in
Snippets Groups Projects
Commit 4da56a8a authored by Neil Gershenfeld's avatar Neil Gershenfeld
Browse files

start draw

parent ebab968b
Branches
No related tags found
No related merge requests found
#
# serialdraw.py
#
# Neil Gershenfeld 7/13/21
#
# This work may be reproduced, modified, distributed,
# performed, and displayed for any purpose, but must
# acknowledge this project. Copyright is retained and
# must be preserved. The work is provided as is; no
# warranty is provided, and users accept all liability.
#
from tkinter import *
import serial,signal,multiprocessing
#
# global variables
#
delay = 0.001
maxcount = 5000
forward = b'f'
reverse = b'r'
#
# shared memory variable
#
count = multiprocessing.Value('i',0,lock=False)
#
def Jog0CW():
print('jog 0 cw')
#
def Jog0CCW():
print('jog 0 ccw')
#
def Jog1CW():
print('jog 1 cw')
#
def Jog1CCW():
print('jog 1 ccw')
#
# check command line arguments
#
if (len(sys.argv) != 1):
print("command line: serialdraw.py")
sys.exit()
#
# open serial port
#
#ser = serial.Serial(port,115200)
#ser.setDTR()
#
# set up GUI
#
root = Tk()
root.title('serialdraw.py (q to exit)')
root.bind('q','exit')
root.configure(bg='white')
pad = 2
#
row = 0
Label(root,text='Steps/mm:',bg='white').grid(column=0,row=row,padx=pad)
StepsPerMM= StringVar(root,'10')
Entry(root,textvariable=StepsPerMM,width=15).grid(column=1,row=row,padx=pad,pady=pad)
#
row += 1
Label(root,text='Jog steps:',bg='white').grid(column=0,row=row,padx=pad,pady=pad)
JogSteps = StringVar(root,'100')
Entry(root,textvariable=JogSteps,width=15).grid(column=1,row=row,padx=pad,pady=pad)
#
row += 1
Label(root,text='Jog time: ',bg='white').grid(column=0,row=row,padx=pad,pady=pad)
JogTime = StringVar(root,'0.01')
Entry(root,textvariable=JogTime,width=15).grid(column=1,row=row,padx=pad,pady=pad)
#
row += 1
Label(root,text='Motor',bg='white').grid(column=0,row=row,padx=pad,pady=pad)
Label(root,text='Port',bg='white').grid(column=1,row=row,padx=pad,pady=pad)
Label(root,text='Jog',bg='white').grid(column=2,row=row,columnspan=2,padx=pad,pady=pad)
#
row += 1
Label(root,text='0',bg='white').grid(column=0,row=row,padx=pad,pady=pad)
Port0 = StringVar(root,'/dev/ttyACM0')
Entry(root,textvariable=Port0,width=15).grid(column=1,row=row,padx=pad,pady=pad)
Button(root,text='CW',command=Jog0CW,bg='white').grid(column=2,row=row,padx=pad,pady=pad)
Button(root,text='CCW',command=Jog0CCW,bg='white').grid(column=3,row=row,padx=pad,pady=pad)
#
row += 1
Label(root,text='1',bg='white').grid(column=0,row=row,padx=pad,pady=pad)
Port1 = StringVar(root,'/dev/ttyACM1')
Entry(root,textvariable=Port1,width=15).grid(column=1,row=row,padx=pad,pady=pad)
Button(root,text='CW',command=Jog1CW,bg='white').grid(column=2,row=row,padx=pad,pady=pad)
Button(root,text='CCW',command=Jog1CCW,bg='white').grid(column=3,row=row,padx=pad,pady=pad)
#
# worker event handlers
#
def worker0(id,count):
localcount = 0
while (1):
0
#
# alarm event handler
#
def alarm(signum,stack):
count.value += 1
if (count.value == maxcount):
count.value = 0
#
# start workers
#
'''
p0 = multiprocessing.Process(target=worker0,args=(0,count))
p0.start()
p1 = multiprocessing.Process(target=worker1,args=(1,count))
p1.start()
p2 = multiprocessing.Process(target=worker2,args=(2,count))
p2.start()
p3 = multiprocessing.Process(target=worker3,args=(3,count))
p3.start()
'''
#
# start alarm
#
signal.signal(signal.SIGALRM,alarm)
signal.setitimer(signal.ITIMER_REAL,delay,delay)
#
# start mainloop and wait for alarms
#
root.mainloop()
while (1):
0
......@@ -21,6 +21,8 @@ port = serial.Serial(device,baudrate=baud,timeout=0)
count = 0;
maxcount = 5000;
forward = b'f'
reverse = b'f'
forward = b'r'
reverse = b'r'
#
# alarm handler
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment