From d677ec1dafe74b46b611191bc47f8110f849ed44 Mon Sep 17 00:00:00 2001 From: Neil Gershenfeld <gersh@cba.mit.edu> Date: Sat, 28 Aug 2021 15:00:59 -0400 Subject: [PATCH] vars to vars --- Urumbot/Urumbot.py | 93 +++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/Urumbot/Urumbot.py b/Urumbot/Urumbot.py index 9960d56..62e3653 100644 --- a/Urumbot/Urumbot.py +++ b/Urumbot/Urumbot.py @@ -24,10 +24,6 @@ def StartProcess(vars): # forward = b'f' reverse = b'r' - points = [] - plotsize = 250 - plotscale = 0 - xmin = ymin = 0 tpwm = 20000 # us (50 Hz) # # open ports @@ -96,6 +92,13 @@ if __name__ == '__main__': # variables class # class VarsClass: + # + # local variables + # + points = [] + plotsize = 250 + plotscale = 0 + xmin = ymin = xmax = ymax = 0 # # shared memory variables # @@ -190,20 +193,19 @@ if __name__ == '__main__': time.sleep(float(vars.ServoDelayVar.get())) # def LoadFile(): - global points,xmin,ymin,plotscale filename = tkinter.filedialog.askopenfile() file = open(filename.name,'r') - xmin = ymin = 1e10 - xmax = ymax = -1e10 + vars.xmin = vars.ymin = 1e10 + vars.xmax = vars.ymax = -1e10 digits = ['-','0','1','2','3','4','5','6','7','8','9'] arg = '' num = '' cmd = '' mode = '' point = 0 - points = [] + vars.points = [] x = y = 0 - Plot.create_rectangle(0,0,plotsize,plotsize,outline='',fill='white') + Plot.create_rectangle(0,0,vars.plotsize,vars.plotsize,outline='',fill='white') while 1: chr = file.read(1) if not chr: @@ -215,13 +217,13 @@ if __name__ == '__main__': if (mode == 'PR'): if (point == 0): x += float(num)/40.0 - points[-1].append(x) + vars.points[-1].append(x) else: y += float(num)/40.0 - points[-1].append(y) + vars.points[-1].append(y) point = 1-point else: - points[-1].append(float(num)/40.0) + vars.points[-1].append(float(num)/40.0) num = '' arg = '' cmd = '' @@ -230,13 +232,13 @@ if __name__ == '__main__': if (mode == 'PR'): if (point == 0): x += float(num)/40.0 - points[-1].append(x) + vars.points[-1].append(x) else: y += float(num)/40.0 - points[-1].append(y) + vars.points[-1].append(y) point = 1-point else: - points[-1].append(float(num)/40.0) + vars.points[-1].append(float(num)/40.0) num = '' else: arg += chr @@ -249,34 +251,34 @@ if __name__ == '__main__': elif (arg == 'PU'): cmd = 'PU' arg = '' - points.append(['PU']) + vars.points.append(['PU']) elif (arg == 'PD'): cmd = 'PD' arg = '' - points.append(['PD']) + vars.points.append(['PD']) elif ((chr in digits) and ((cmd == 'PU') or (cmd == 'PD'))): num += chr file.close() - for segment in range(len(points)): - for point in range(1,len(points[segment]),2): - x = points[segment][point] - if (x > xmax): xmax = x - if (x < xmin): xmin = x - y = points[segment][point+1] - if (y > ymax): ymax = y - if (y < ymin): ymin = y - FileLimits.config(text=f"{xmax-xmin:.3f} x {ymax-ymin:.3f}") - if ((xmax-xmin) > (ymax-ymin)): - plotscale = (plotsize-2)/(xmax-xmin) + for segment in range(len(vars.points)): + for point in range(1,len(vars.points[segment]),2): + x = vars.points[segment][point] + if (x > vars.xmax): vars.xmax = x + if (x < vars.xmin): vars.xmin = x + y = vars.points[segment][point+1] + if (y > vars.ymax): vars.ymax = y + if (y < vars.ymin): vars.ymin = y + FileLimits.config(text=f"{vars.xmax-vars.xmin:.3f} x {vars.ymax-vars.ymin:.3f}") + if ((vars.xmax-vars.xmin) > (vars.ymax-vars.ymin)): + vars.plotscale = (vars.plotsize-2)/(vars.xmax-vars.xmin) else: - plotscale = (plotsize-2)/(ymax-ymin) + vars.plotscale = (vars.plotsize-2)/(vars.ymax-vars.ymin) xold = 0 - yold = plotsize-1 - for segment in range(len(points)): - type = points[segment][0] - for point in range(1,len(points[segment]),2): - xnew = 1+plotscale*(points[segment][point]-xmin) - ynew = (plotsize-1)-plotscale*(points[segment][point+1]-ymin) + yold = vars.plotsize-1 + for segment in range(len(vars.points)): + type = vars.points[segment][0] + for point in range(1,len(vars.points[segment]),2): + xnew = 1+vars.plotscale*(vars.points[segment][point]-vars.xmin) + ynew = (vars.plotsize-1)-vars.plotscale*(vars.points[segment][point+1]-vars.ymin) if (type == 'PU'): Plot.create_line(xold,yold,xnew,ynew,width=1,fill="#FF0000") else: @@ -285,30 +287,29 @@ if __name__ == '__main__': yold = ynew # def DrawFile(): - global points,xmin,ymin r0 = float(vars.R0Var.get()) r1 = float(vars.R1Var.get()) x0,y0 = PolarToCartesian(r0,r1) xold = 0 - yold = plotsize-1 - Plot.create_rectangle(0,0,plotsize,plotsize,outline='',fill='white') - for segment in range(len(points)): - type = points[segment][0] + yold = vars.plotsize-1 + Plot.create_rectangle(0,0,vars.plotsize,vars.plotsize,outline='',fill='white') + for segment in range(len(vars.points)): + type = vars.points[segment][0] if (type == 'PU'): PenUp() else: PenDown() - for point in range(1,len(points[segment]),2): - xnew = 1+plotscale*(points[segment][point]-xmin) - ynew = (plotsize-1)-plotscale*(points[segment][point+1]-ymin) + for point in range(1,len(vars.points[segment]),2): + xnew = 1+vars.plotscale*(vars.points[segment][point]-vars.xmin) + ynew = (vars.plotsize-1)-vars.plotscale*(vars.points[segment][point+1]-vars.ymin) if (type == 'PU'): Plot.create_line(xold,yold,xnew,ynew,width=1,fill="#FF0000") else: Plot.create_line(xold,yold,xnew,ynew,width=1,fill="#000000") xold = xnew yold = ynew - x = x0-points[segment][point]+xmin - y = y0-points[segment][point+1]+ymin + x = x0-vars.points[segment][point]+vars.xmin + y = y0-vars.points[segment][point+1]+vars.ymin MoveTo(x,y) # def MoveTo(xnew,ynew): @@ -448,7 +449,7 @@ if __name__ == '__main__': # row += 1 Label(root,text='origin',bg='white').grid(column=0,row=row,padx=pad,pady=pad,sticky='se') - Plot = Canvas(root,width=plotsize,height=plotsize,background='white') + Plot = Canvas(root,width=vars.plotsize,height=vars.plotsize,background='white') Plot.grid(column=1,row=row,columnspan=4,padx=pad,pady=pad,sticky='sw') # # start mainloop -- GitLab