Subversion Repositories Projects

Rev

Rev 718 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 718 Rev 720
Line 1... Line 1...
1
#!/usr/bin/env python
1
#!/usr/bin/env python
2
# -*- coding: iso-8859-15 -*-
2
# -*- coding: iso-8859-15 -*-
3
# generated by wxGlade 0.6.3 on Thu Sep 24 15:46:36 2009
3
# generated by wxGlade 0.6.3 on Thu Sep 24 15:46:36 2009
4
 
4
 
5
#
5
#
6
# Mikrokopter VibrationTest  Rev: $Rev: 718 $
6
# Mikrokopter VibrationTest  Rev: $Rev: 720 $
7
#
7
#
8
# Author: Frederic Goddeeris   (frederic@rc-flight.be) 
8
# Author: Frederic Goddeeris   (frederic@rc-flight.be) 
9
#
9
#
10
 
10
 
11
import sys
11
import sys
Line 67... Line 67...
67
class MkSettingsDialog(wx.Frame):
67
class MkSettingsDialog(wx.Frame):
68
    def __init__(self, *args, **kwds):
68
    def __init__(self, *args, **kwds):
69
        # begin wxGlade: MkSettingsDialog.__init__
69
        # begin wxGlade: MkSettingsDialog.__init__
70
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
70
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
71
        wx.Frame.__init__(self, *args, **kwds)
71
        wx.Frame.__init__(self, *args, **kwds)
-
 
72
        self.statusText = wx.StaticText(self, -1, "--")
72
        self.label_2 = wx.StaticText(self, -1, "Gyro-P", style=wx.ALIGN_RIGHT)
73
        self.label_2 = wx.StaticText(self, -1, "Gyro-P", style=wx.ALIGN_RIGHT)
73
        self.slider_GyroP = wx.Slider(self, -1, 0, 0, 255, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
74
        self.slider_GyroP = wx.Slider(self, -1, 0, 0, 255, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
74
        self.label_2_copy = wx.StaticText(self, -1, "Gyro-I", style=wx.ALIGN_RIGHT)
75
        self.label_2_copy = wx.StaticText(self, -1, "Gyro-I", style=wx.ALIGN_RIGHT)
75
        self.slider_GyroI = wx.Slider(self, -1, 0, 0, 255, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
76
        self.slider_GyroI = wx.Slider(self, -1, 0, 0, 255, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
76
        self.label_2_copy_1 = wx.StaticText(self, -1, "Gyro-D", style=wx.ALIGN_RIGHT)
77
        self.label_2_copy_1 = wx.StaticText(self, -1, "Gyro-D", style=wx.ALIGN_RIGHT)
Line 79... Line 80...
79
        self.slider_FactorI = wx.Slider(self, -1, 0, 0, 255, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
80
        self.slider_FactorI = wx.Slider(self, -1, 0, 0, 255, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
80
        self.label_2_copy_3 = wx.StaticText(self, -1, "", style=wx.ALIGN_RIGHT)
81
        self.label_2_copy_3 = wx.StaticText(self, -1, "", style=wx.ALIGN_RIGHT)
81
        self.slider_1_copy_3 = wx.Slider(self, -1, 0, 0, 255, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
82
        self.slider_1_copy_3 = wx.Slider(self, -1, 0, 0, 255, style=wx.SL_HORIZONTAL|wx.SL_LABELS)
82
        self.loadButton = wx.Button(self, -1, "Load")
83
        self.loadButton = wx.Button(self, -1, "Load")
83
        self.storeButton = wx.Button(self, -1, "Store")
84
        self.storeButton = wx.Button(self, -1, "Store")
-
 
85
        self.defaultButton = wx.Button(self, -1, "Default")
84
 
86
 
85
        self.__set_properties()
87
        self.__set_properties()
86
        self.__do_layout()
88
        self.__do_layout()
87
 
89
 
88
        self.Bind(wx.EVT_BUTTON, self.onLoad, self.loadButton)
90
        self.Bind(wx.EVT_BUTTON, self.onLoad, self.loadButton)
-
 
91
        self.Bind(wx.EVT_BUTTON, self.onStore, self.storeButton)
-
 
92
        self.Bind(wx.EVT_BUTTON, self.onDefault, self.defaultButton)
89
        # end wxGlade
93
        # end wxGlade
90
 
94
 
91
    def __set_properties(self):
95
    def __set_properties(self):
92
        # begin wxGlade: MkSettingsDialog.__set_properties
96
        # begin wxGlade: MkSettingsDialog.__set_properties
93
        self.SetTitle("MK Settings")
97
        self.SetTitle("MK Settings")
94
        self.SetSize((600, 450))
98
        self.SetSize((600, 450))
-
 
99
        self.statusText.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
95
        self.label_2.SetMinSize((80, 16))
100
        self.label_2.SetMinSize((80, 16))
96
        self.label_2.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
101
        self.label_2.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
97
        self.slider_GyroP.SetMinSize((400, -1))
102
        self.slider_GyroP.SetMinSize((400, -1))
98
        self.slider_GyroP.SetBackgroundColour(wx.Colour(128, 128, 128))
103
        self.slider_GyroP.SetBackgroundColour(wx.Colour(128, 128, 128))
99
        self.label_2_copy.SetMinSize((80, 16))
104
        self.label_2_copy.SetMinSize((80, 16))
Line 110... Line 115...
110
        self.slider_FactorI.SetBackgroundColour(wx.Colour(128, 128, 128))
115
        self.slider_FactorI.SetBackgroundColour(wx.Colour(128, 128, 128))
111
        self.label_2_copy_3.SetMinSize((80, 16))
116
        self.label_2_copy_3.SetMinSize((80, 16))
112
        self.label_2_copy_3.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
117
        self.label_2_copy_3.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
113
        self.slider_1_copy_3.SetMinSize((400, -1))
118
        self.slider_1_copy_3.SetMinSize((400, -1))
114
        self.slider_1_copy_3.SetBackgroundColour(wx.Colour(128, 128, 128))
119
        self.slider_1_copy_3.SetBackgroundColour(wx.Colour(128, 128, 128))
-
 
120
        self.loadButton.SetBackgroundColour(wx.Colour(0, 255, 0))
-
 
121
        self.storeButton.SetBackgroundColour(wx.Colour(255, 0, 0))
115
        # end wxGlade
122
        # end wxGlade
116
 
123
 
117
    def __do_layout(self):
124
    def __do_layout(self):
118
        # begin wxGlade: MkSettingsDialog.__do_layout
125
        # begin wxGlade: MkSettingsDialog.__do_layout
119
        sizer_15 = wx.BoxSizer(wx.VERTICAL)
126
        sizer_15 = wx.BoxSizer(wx.VERTICAL)
Line 126... Line 133...
126
        sizer_24_copy_1 = wx.BoxSizer(wx.HORIZONTAL)
133
        sizer_24_copy_1 = wx.BoxSizer(wx.HORIZONTAL)
127
        sizer_24_copy = wx.BoxSizer(wx.HORIZONTAL)
134
        sizer_24_copy = wx.BoxSizer(wx.HORIZONTAL)
128
        sizer_24 = wx.BoxSizer(wx.HORIZONTAL)
135
        sizer_24 = wx.BoxSizer(wx.HORIZONTAL)
129
        sizer_21.Add((20, 20), 0, 0, 0)
136
        sizer_21.Add((20, 20), 0, 0, 0)
130
        sizer_22.Add((20, 20), 0, 0, 0)
137
        sizer_22.Add((20, 20), 0, 0, 0)
-
 
138
        sizer_23.Add(self.statusText, 0, 0, 0)
-
 
139
        sizer_23.Add((20, 20), 0, 0, 0)
131
        sizer_24.Add(self.label_2, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0)
140
        sizer_24.Add(self.label_2, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0)
132
        sizer_24.Add((20, 20), 0, 0, 0)
141
        sizer_24.Add((20, 20), 0, 0, 0)
133
        sizer_24.Add(self.slider_GyroP, 0, 0, 0)
142
        sizer_24.Add(self.slider_GyroP, 0, 0, 0)
134
        sizer_23.Add(sizer_24, 1, wx.EXPAND, 0)
143
        sizer_23.Add(sizer_24, 1, wx.EXPAND, 0)
135
        sizer_23.Add((20, 20), 0, 0, 0)
144
        sizer_23.Add((20, 20), 0, 0, 0)
Line 151... Line 160...
151
        sizer_24_copy_3.Add(self.label_2_copy_3, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0)
160
        sizer_24_copy_3.Add(self.label_2_copy_3, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0)
152
        sizer_24_copy_3.Add((20, 20), 0, 0, 0)
161
        sizer_24_copy_3.Add((20, 20), 0, 0, 0)
153
        sizer_24_copy_3.Add(self.slider_1_copy_3, 0, 0, 0)
162
        sizer_24_copy_3.Add(self.slider_1_copy_3, 0, 0, 0)
154
        sizer_23.Add(sizer_24_copy_3, 1, wx.EXPAND, 0)
163
        sizer_23.Add(sizer_24_copy_3, 1, wx.EXPAND, 0)
155
        sizer_23.Add((20, 20), 0, 0, 0)
164
        sizer_23.Add((20, 20), 0, 0, 0)
-
 
165
        sizer_23.Add((20, 20), 0, 0, 0)
156
        sizer_22.Add(sizer_23, 1, wx.EXPAND, 0)
166
        sizer_22.Add(sizer_23, 1, wx.EXPAND, 0)
157
        sizer_25.Add(self.loadButton, 0, 0, 0)
167
        sizer_25.Add(self.loadButton, 0, 0, 0)
158
        sizer_25.Add((20, 20), 0, 0, 0)
168
        sizer_25.Add((20, 20), 0, 0, 0)
159
        sizer_25.Add(self.storeButton, 0, 0, 0)
169
        sizer_25.Add(self.storeButton, 0, 0, 0)
160
        sizer_25.Add((20, 20), 0, 0, 0)
170
        sizer_25.Add((20, 20), 0, 0, 0)
-
 
171
        sizer_25.Add(self.defaultButton, 0, 0, 0)
161
        sizer_22.Add(sizer_25, 1, wx.EXPAND, 0)
172
        sizer_22.Add(sizer_25, 1, wx.EXPAND, 0)
162
        sizer_22.Add((20, 20), 0, 0, 0)
173
        sizer_22.Add((20, 20), 0, 0, 0)
163
        sizer_21.Add(sizer_22, 0, 0, 0)
174
        sizer_21.Add(sizer_22, 0, 0, 0)
164
        sizer_21.Add((20, 20), 0, 0, 0)
175
        sizer_21.Add((20, 20), 0, 0, 0)
165
        sizer_15.Add(sizer_21, 0, 0, 0)
176
        sizer_15.Add(sizer_21, 0, 0, 0)
166
        self.SetSizer(sizer_15)
177
        self.SetSizer(sizer_15)
167
        self.Layout()
178
        self.Layout()
168
        self.SetSize((600, 450))
179
        self.SetSize((600, 450))
169
        # end wxGlade
180
        # end wxGlade
170
 
181
 
171
    def onLoad(self, event): # wxGlade: MkSettingsDialog.<event_handler>
182
    def doLoad(self):
172
        print "Loading MK Settings"
183
        print "Loading MK Settings"
173
       
184
       
174
        mk = MkProtocol.MkComm()
185
        mk = MkProtocol.MkComm()
175
        mk.open(comPort=self.app.settings["serialport"].value)
186
        mk.open(comPort=self.app.settings["serialport"].value)
176
   
187
   
177
        msg = mk.getSettingsMsg()
188
        msg = mk.getSettingsMsg()
178
        print "Index=",msg.getIndex()
189
        s = "%d  %s" % (msg.getIndex(), msg.getName())
-
 
190
        print s
-
 
191
       
179
        print "Name=",msg.getName()
192
        self.statusText.SetLabel(s)
180
 
193
 
181
        self.slider_GyroP.SetValue(msg.getSetting(SettingsMsg.IDX_STICK_P))
194
        self.slider_GyroP.SetValue(msg.getSetting(MkProtocol.SettingsMsg.IDX_GYRO_P))
182
        self.slider_GyroP.SetValue(msg.getSetting(SettingsMsg.IDX_STICK_I))
195
        self.slider_GyroI.SetValue(msg.getSetting(MkProtocol.SettingsMsg.IDX_GYRO_I))
183
        self.slider_GyroP.SetValue(msg.getSetting(SettingsMsg.IDX_STICK_D))
196
        self.slider_GyroD.SetValue(msg.getSetting(MkProtocol.SettingsMsg.IDX_GYRO_D))
-
 
197
        self.slider_FactorI.SetValue(msg.getSetting(MkProtocol.SettingsMsg.IDX_I_FACTOR))
184
       
198
       
185
        mk.close()
199
        mk.close()
186
       
200
       
-
 
201
 
-
 
202
       
-
 
203
    def doStore(self):
-
 
204
        print "Storing MK Settings"
-
 
205
       
187
        event.Skip()
206
        mk = MkProtocol.MkComm()
-
 
207
        mk.open(comPort=self.app.settings["serialport"].value)
-
 
208
       
-
 
209
        msg = mk.getSettingsMsg()
-
 
210
       
-
 
211
        msg.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_P, self.slider_GyroP.GetValue())
-
 
212
        msg.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_I, self.slider_GyroI.GetValue())
-
 
213
        msg.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_D, self.slider_GyroD.GetValue())
-
 
214
        msg.setSetting(MkProtocol.SettingsMsg.IDX_I_FACTOR, self.slider_FactorI.GetValue())
-
 
215
       
-
 
216
        mk.sendSettings(msg.getSettings())
188
       
217
       
189
   
-
 
190
    def setApp(self, app):
218
    def setApp(self, app):
191
        self.app = app
219
        self.app = app
-
 
220
 
-
 
221
 
-
 
222
    def onLoad(self, event): # wxGlade: MkSettingsDialog.<event_handler>
-
 
223
        self.doLoad()
-
 
224
        event.Skip()
-
 
225
 
-
 
226
    def onStore(self, event): # wxGlade: MkSettingsDialog.<event_handler>
-
 
227
        self.doStore()
-
 
228
        event.Skip()
-
 
229
 
-
 
230
    def onDefault(self, event): # wxGlade: MkSettingsDialog.<event_handler>
-
 
231
        self.slider_GyroP.SetValue(100)
-
 
232
        self.slider_GyroI.SetValue(120)
-
 
233
        self.slider_GyroD.SetValue(3)
-
 
234
        self.slider_FactorI.SetValue(16)
-
 
235
        event.Skip()
-
 
236
 
192
# end of class MkSettingsDialog
237
# end of class MkSettingsDialog
193
 
238
 
194
 
239
 
195
 
240
 
196
 
241
 
Line 954... Line 999...
954
    def onAbout(self, event): # wxGlade: MainFrame.<event_handler>
999
    def onAbout(self, event): # wxGlade: MainFrame.<event_handler>
955
         # First we create and fill the info object
1000
         # First we create and fill the info object
956
        print "about"
1001
        print "about"
957
        info = wx.AboutDialogInfo()
1002
        info = wx.AboutDialogInfo()
958
        info.Name = "MK Vibration Test - "
1003
        info.Name = "MK Vibration Test - "
959
        info.Version = "v1.2 ($Rev: 718 $)".replace("$","")
1004
        info.Version = "v1.2 ($Rev: 720 $)".replace("$","")
960
        info.Copyright = ""
1005
        info.Copyright = ""
961
        info.Developers=["Frederic Goddeeris  (Frederic@rc-flight.be)"]
1006
        info.Developers=["Frederic Goddeeris  (Frederic@rc-flight.be)"]
962
        info.Description = "Please consult the WIKI page for a complete description of the tool:"
1007
        info.Description = "Please consult the WIKI page for a complete description of the tool:"
963
        info.WebSite = ("http://www.mikrokopter.de/ucwiki/en/VibrationTest", "VibrationTest WIKI page")
1008
        info.WebSite = ("http://www.mikrokopter.de/ucwiki/en/VibrationTest", "VibrationTest WIKI page")
964
        wx.AboutBox(info)
1009
        wx.AboutBox(info)
Line 1082... Line 1127...
1082
            for I in self.param.speeds:
1127
            for I in self.param.speeds:
1083
                self._sendEvent("TestSettings I=%d" % I)
1128
                self._sendEvent("TestSettings I=%d" % I)
1084
                orgSetting = self.mk.getSettingsMsg()
1129
                orgSetting = self.mk.getSettingsMsg()
1085
                testSettings = copy.deepcopy(orgSetting)
1130
                testSettings = copy.deepcopy(orgSetting)
1086
               
1131
               
1087
#                testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_P, I)
1132
                testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_P, I)
1088
#                testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_I, 65)
1133
                testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_I, 120)
1089
               
1134
               
1090
                testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_P, 0)
1135
#                testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_P, 0)
1091
                testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_I, I)
1136
#                testSettings.setSetting(MkProtocol.SettingsMsg.IDX_GYRO_I, I)
1092
               
1137
               
1093
                self.mk.sendSettings(testSettings.getSettings())
1138
                self.mk.sendSettings(testSettings.getSettings())
1094
               
1139
               
1095
                #time.sleep(3)
1140
                #time.sleep(3)
1096
   
1141
   
1097
                ## DISTURB
1142
                ## DISTURB
1098
                msg = MkProtocol.MkMsg(address=2, cmd='f', data=[7, 50])
1143
                msg = MkProtocol.MkMsg(address=2, cmd='f', data=[3, 50])
1099
                self.mk.sendMsg(msg)
1144
                self.mk.sendMsg(msg)
1100
                time.sleep(.1)
1145
                time.sleep(.1)
1101
           
1146
           
1102
                #data = self.mk.doVibrationTest(1000, channel)
1147
                #data = self.mk.doVibrationTest(1000, channel)
1103
                messages = self.mk.recordDbgMsg(0.05, 20*5)
1148
                messages = self.mk.recordDbgMsg(0.05, 20*5)