1461
|
1 |
<?xml version='1.0' encoding='utf-8'?>
|
|
2 |
<PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
|
3 |
<variables>
|
|
4 |
<variable name="Power_ON" type="BOOL"/>
|
|
5 |
<variable name="Power_OFF" type="BOOL"/>
|
|
6 |
<variable name="DrawTest" type="BOOL"/>
|
|
7 |
<variable name="DrawLogo" type="BOOL"/>
|
|
8 |
<variable name="DrawEscher" type="BOOL"/>
|
|
9 |
<variable name="Detect_Circle" type="BOOL"/>
|
|
10 |
<variable name="XaxisPos" type="INT"/>
|
|
11 |
<variable name="YaxisPos" type="INT"/>
|
|
12 |
<variable name="ZaxisPos" type="INT"/>
|
|
13 |
<variable name="TaxisPos" type="INT"/>
|
|
14 |
<variable name="XaxisMinus" type="BOOL"/>
|
|
15 |
<variable name="YaxisMinus" type="BOOL"/>
|
|
16 |
<variable name="ZaxisMinus" type="BOOL"/>
|
|
17 |
<variable name="TaxisMinus" type="BOOL"/>
|
|
18 |
<variable name="XaxisPlus" type="BOOL"/>
|
|
19 |
<variable name="YaxisPlus" type="BOOL"/>
|
|
20 |
<variable name="ZaxisPlus" type="BOOL"/>
|
|
21 |
<variable name="TaxisPlus" type="BOOL"/>
|
|
22 |
</variables>
|
|
23 |
<globals>
|
|
24 |
<xhtml:p><![CDATA[
|
|
25 |
import ctypes
|
|
26 |
import Image
|
|
27 |
import wx, sys
|
|
28 |
|
|
29 |
AxisList = ["X","Y","Z","T"]
|
|
30 |
|
|
31 |
PwrButtons = ['Power_ON',
|
|
32 |
'Power_OFF']
|
|
33 |
|
|
34 |
ActionButtons = ['Detect_Circle',
|
|
35 |
'DrawTest',
|
|
36 |
'DrawLogo',
|
|
37 |
'DrawEscher']
|
|
38 |
|
|
39 |
class ThreeDee(wx.StaticText):
|
|
40 |
def __init__(self, *args, **kwargs):
|
|
41 |
self.initialized = False
|
|
42 |
kwargs["style"] = wx.ALIGN_CENTRE_HORIZONTAL
|
|
43 |
super(ThreeDee, self).__init__(*args, **kwargs)
|
|
44 |
|
|
45 |
self.SetFont(wx.Font(24, wx.SWISS, wx.NORMAL, wx.BOLD))
|
|
46 |
|
|
47 |
self.positions = [0.]*4
|
|
48 |
|
|
49 |
self.Message = None
|
|
50 |
self.NegLimits = None
|
|
51 |
self.Disk = None
|
|
52 |
|
|
53 |
|
|
54 |
def UpdatePositions(self, positions):
|
|
55 |
# get globals from PLC
|
|
56 |
self.positions = positions
|
|
57 |
self.SetLabel(
|
|
58 |
((self.Message +'\n\n') if self.Message else '' )+
|
|
59 |
" ".join(["%s %+.2f"%(axis,self.positions[i])
|
|
60 |
for i,axis in enumerate(AxisList)]))
|
|
61 |
|
|
62 |
def MakeButtonFunc(window, sizer, btname):
|
|
63 |
def ButtonDown(event):
|
|
64 |
setattr(PLCGlobals,btname,1)
|
|
65 |
event.Skip()
|
|
66 |
def ButtonUp(event):
|
|
67 |
setattr(PLCGlobals,btname,0)
|
|
68 |
event.Skip()
|
|
69 |
obj = wx.BitmapButton(window, -1, wx.Bitmap('%s.png'%btname))
|
|
70 |
sizer.Add(obj, 2, wx.EXPAND, 0)
|
|
71 |
obj.Bind(wx.EVT_LEFT_DOWN, ButtonDown)
|
|
72 |
obj.Bind(wx.EVT_LEFT_UP, ButtonUp)
|
|
73 |
return obj
|
|
74 |
|
|
75 |
def UpdatePositions(self, event):
|
|
76 |
|
|
77 |
# TODO : uncomment
|
|
78 |
positions = [getattr(PLCGlobals,axname+"axisPos") for axname in AxisList]
|
|
79 |
|
|
80 |
self.window_1.UpdatePositions(positions)
|
|
81 |
|
|
82 |
event.Skip()
|
|
83 |
|
|
84 |
Class_wxglade_hmi.UpdatePositions = UpdatePositions
|
|
85 |
|
|
86 |
initorig = Class_wxglade_hmi.__init__
|
|
87 |
def Init(self,*args,**kargs):
|
|
88 |
initorig(self,*args,**kargs)
|
|
89 |
sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(0).GetSizer()
|
|
90 |
self.main_buttons = map(
|
|
91 |
lambda btname: MakeButtonFunc(self, sizer, btname), PwrButtons)
|
|
92 |
sizer = self.GetSizer().GetItem(1).GetSizer().GetItem(1).GetSizer()
|
|
93 |
self.main_buttons = map(
|
|
94 |
lambda btname: MakeButtonFunc(self, sizer, btname), ActionButtons)
|
|
95 |
self.axis_buttons = map(
|
|
96 |
lambda axis:( MakeButtonFunc(self, sizer, axis+"axisMinus"),
|
|
97 |
MakeButtonFunc(self, sizer, axis+"axisPlus")),
|
|
98 |
AxisList)
|
|
99 |
self.timer = wx.Timer(self, -1)
|
|
100 |
self.Bind(wx.EVT_TIMER, self.UpdatePositions, self.timer)
|
|
101 |
self.ShowFullScreen(True,wx.FULLSCREEN_ALL)
|
|
102 |
wx.CallAfter(self.timer.Start,200)
|
|
103 |
|
|
104 |
Class_wxglade_hmi.__init__ = Init
|
|
105 |
|
|
106 |
def GUIMessage(message):
|
|
107 |
try:
|
|
108 |
wxglade_hmi.window_1.Message = message
|
|
109 |
except:
|
|
110 |
# sometime get some wxpydeadobject
|
|
111 |
pass
|
|
112 |
|
|
113 |
def SetNegLimits(*args):
|
|
114 |
wxglade_hmi.window_1.NegLimits = args
|
|
115 |
|
|
116 |
def SetDisk(*args):
|
|
117 |
wxglade_hmi.window_1.Disk = args
|
|
118 |
GUIMessage("DiskOK")
|
|
119 |
|
|
120 |
]]></xhtml:p>
|
|
121 |
</globals>
|
|
122 |
<init>
|
|
123 |
<xhtml:p><![CDATA[
|
|
124 |
]]></xhtml:p>
|
|
125 |
</init>
|
|
126 |
<cleanup>
|
|
127 |
<xhtml:p><![CDATA[
|
|
128 |
]]></xhtml:p>
|
|
129 |
</cleanup>
|
|
130 |
<start>
|
|
131 |
<xhtml:p><![CDATA[
|
|
132 |
]]></xhtml:p>
|
|
133 |
</start>
|
|
134 |
<stop>
|
|
135 |
<xhtml:p><![CDATA[
|
|
136 |
]]></xhtml:p>
|
|
137 |
</stop>
|
|
138 |
</PyFile>
|