Subversion Repositories Projects

Rev

Rev 90 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 90 Rev 97
Line 40... Line 40...
40
    public class RoboBoardService : DsspServiceBase
40
    public class RoboBoardService : DsspServiceBase
41
    {
41
    {
42
        RoboBoardForm _rbForm;
42
        RoboBoardForm _rbForm;
43
        RoboBoardEvents _eventsPort = new RoboBoardEvents();
43
        RoboBoardEvents _eventsPort = new RoboBoardEvents();
Line -... Line 44...
-
 
44
 
-
 
45
        bool subs = false;
-
 
46
        bool isloaded = false;
44
 
47
 
45
        private Roboboard.SerialCom sc = new Robotics.Serial.SerialCom();
48
        private Roboboard.SerialCom sc = new Robotics.Serial.SerialCom();
46
        /// <summary>
49
        /// <summary>
47
        /// _state
50
        /// _state
48
        /// </summary>
51
        /// </summary>
Line 140... Line 143...
140
            yield break;
143
            yield break;
141
        }
144
        }
Line 142... Line 145...
142
 
145
 
143
        //---------------------------------------------------------------------
146
        //---------------------------------------------------------------------
-
 
147
        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
-
 
148
        public IEnumerator<ITask> InitComplete(InitComplete initComplete)
-
 
149
        {
-
 
150
            LogInfo("Init");
-
 
151
            LogInfo("Command:" + initComplete.Body.Command);
-
 
152
            yield break;
-
 
153
        }
-
 
154
 
-
 
155
        //---------------------------------------------------------------------
144
        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
156
        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
145
        public IEnumerator<ITask> SetComPortHandler(SetComPort setComPort)
157
        public IEnumerator<ITask> SetComPortHandler(SetComPort setComPort)
146
        {
158
        {
147
            LogInfo("Set Port Name ("+setComPort.Body.PortName+")");
159
            LogInfo("Set Port Name ("+setComPort.Body.PortName+")");
148
            if ((setComPort.Body.PortName == sc.ComPort)&&(sc.isOpen==true))
160
            if ((setComPort.Body.PortName == sc.ComPort)&&(sc.isOpen==true))
Line 161... Line 173...
161
                if (_rbForm != null)
173
                if (_rbForm != null)
162
                {
174
                {
163
                    if (sc.InitPort() == 0)
175
                    if (sc.InitPort() == 0)
164
                    {
176
                    {
165
                        LogInfo("Init Port succseeded");
177
                        LogInfo("Init Port succseeded");
166
                        WinFormsServicePort.FormInvoke(delegate()
178
                        WinFormsServicePort.FormInvoke(delegate()
167
                        {_rbForm.UpdateStatus("Port Open (" + sc.ComPort + ")");});
179
                        { _rbForm.UpdateStatus("Port Open (" + sc.ComPort + ")"); });
168
                    }
180
                    }
169
                    else
181
                    else
170
                    {
182
                    {
171
                        LogInfo("Init Port failed");
183
                        LogInfo("Init Port failed");
172
                        WinFormsServicePort.FormInvoke(delegate()
184
                        WinFormsServicePort.FormInvoke(delegate()
173
                        {_rbForm.UpdateStatus("Can't open communication port (" + sc.ComPort + ")");});
185
                        { _rbForm.UpdateStatus("Can't open communication port (" + sc.ComPort + ")"); });
174
                    }
186
                    }
175
                }
187
                }
-
 
188
                else
-
 
189
                {
-
 
190
                    LogInfo("Board communication not ready! Setport Ignored");
-
 
191
                }
176
            }
192
            }
-
 
193
            LogInfo("Exit Set Comport");
177
            yield break;
194
            yield break;
178
        }
195
        }
Line 179... Line 196...
179
 
196
 
180
        //---------------------------------------------------------------------
197
        //---------------------------------------------------------------------
Line 254... Line 271...
254
            if (_rbForm != null)
271
            if (_rbForm != null)
255
            {
272
            {
256
                _rbForm.Control_gier = igier;
273
                _rbForm.Control_gier = igier;
257
            }
274
            }
Line -... Line 275...
-
 
275
 
-
 
276
            if (MK_latest_gier != igier)
258
 
277
            {
259
            MK_latest_gier = igier;
278
                MK_latest_gier = igier;
260
            MKRequestControl(MK_latest_nick, MK_latest_roll, MK_latest_gier, MK_latest_gas);
279
                MKRequestControl(MK_latest_nick, MK_latest_roll, MK_latest_gier, MK_latest_gas);
261
 
280
            }
262
            base.SendNotification(_submgrPort, setgier);
281
            base.SendNotification(_submgrPort, setgier);
263
            setgier.ResponsePort.Post(DefaultUpdateResponseType.Instance);
282
            setgier.ResponsePort.Post(DefaultUpdateResponseType.Instance);
264
            yield break;
283
            yield break;
Line 274... Line 293...
274
            if (_rbForm != null)
293
            if (_rbForm != null)
275
            {
294
            {
276
               _rbForm.Control_gas = igas;
295
               _rbForm.Control_gas = igas;
277
            }
296
            }
Line -... Line 297...
-
 
297
 
-
 
298
            if (MK_latest_gas != igas)
278
 
299
            {
279
            MK_latest_gas = igas;
300
                MK_latest_gas = igas;
-
 
301
                MKRequestControl(MK_latest_nick, MK_latest_roll, MK_latest_gier, MK_latest_gas);
Line 280... Line 302...
280
            MKRequestControl(MK_latest_nick, MK_latest_roll, MK_latest_gier, MK_latest_gas);
302
            }
281
 
303
 
282
            base.SendNotification(_submgrPort, setgas);
304
            base.SendNotification(_submgrPort, setgas);
283
            setgas.ResponsePort.Post(DefaultUpdateResponseType.Instance);
305
            setgas.ResponsePort.Post(DefaultUpdateResponseType.Instance);
Line 299... Line 321...
299
            {
321
            {
300
                _rbForm.Control_nick = inick;
322
                _rbForm.Control_nick = inick;
301
                _rbForm.Control_roll = iroll;
323
                _rbForm.Control_roll = iroll;
302
            }
324
            }
Line -... Line 325...
-
 
325
 
-
 
326
            if ((MK_latest_roll != iroll) || (MK_latest_nick != inick))
303
 
327
            {
304
            MK_latest_nick = inick;
328
                MK_latest_nick = inick;
305
            MK_latest_roll = iroll;
329
                MK_latest_roll = iroll;
-
 
330
                MKRequestControl(MK_latest_nick, MK_latest_roll, MK_latest_gier, MK_latest_gas);
Line 306... Line 331...
306
            MKRequestControl(MK_latest_nick, MK_latest_roll, MK_latest_gier, MK_latest_gas);
331
            }
307
 
332
 
308
            base.SendNotification(_submgrPort, control);
333
            base.SendNotification(_submgrPort, control);
309
            control.ResponsePort.Post(DefaultUpdateResponseType.Instance);
334
            control.ResponsePort.Post(DefaultUpdateResponseType.Instance);
Line 326... Line 351...
326
                delegate(Exception e)
351
                delegate(Exception e)
327
                {
352
                {
328
                    LogError(null, "Subscribe failed", e);
353
                    LogError(null, "Subscribe failed", e);
329
                }
354
                }
330
            );
355
            );
-
 
356
            if (isloaded)
-
 
357
            {
-
 
358
                base.SendNotification(_submgrPort, new InitComplete("OK"));
331
 
359
            }
-
 
360
            subs = true;
332
            yield break;
361
            yield break;
333
        }
362
        }
Line 334... Line 363...
334
 
363
 
335
        //---------------------------------------------------------------------
364
        //---------------------------------------------------------------------
336
        IEnumerator<ITask> OnLoadHandler(OnLoad onLoad)
365
        IEnumerator<ITask> OnLoadHandler(OnLoad onLoad)
337
        {
366
        {
338
            _rbForm = onLoad.RoboBoardForm;
367
            _rbForm = onLoad.RoboBoardForm;
339
            LogInfo("Loaded Form");
368
            LogInfo("Loaded Form");
340
            sc.ComPort = "COM6";
369
            sc.ComPort = "COM7";
341
            if (_rbForm != null)
370
            if (_rbForm != null)
342
            {
371
            {
343
                if (sc.InitPort() == 0)
372
                if (sc.InitPort() == 0)
-
 
373
                {
344
                {
374
                    LogInfo("Port Open");
345
                    WinFormsServicePort.FormInvoke(delegate()
375
                    WinFormsServicePort.FormInvoke(delegate()
346
                    {_rbForm.UpdateStatus("Port Open (" + sc.ComPort + ")");});
376
                    {_rbForm.UpdateStatus("Port Open (" + sc.ComPort + ")");});
347
                }
377
                }
348
                else
378
                else
-
 
379
                {
349
                {
380
                    LogInfo("Port failed to Open");
350
                    WinFormsServicePort.FormInvoke(delegate()
381
                    WinFormsServicePort.FormInvoke(delegate()
351
                    {_rbForm.UpdateStatus("Can't open communication port (" + sc.ComPort + ")");});
382
                    {_rbForm.UpdateStatus("Can't open communication port (" + sc.ComPort + ")");});
352
                }
383
                }
353
            }
-
 
354
           
384
            }
355
            //request version
385
            //request version
-
 
386
            MKRequestVersion();
-
 
387
            if (subs)
-
 
388
            {
-
 
389
                base.SendNotification(_submgrPort, new InitComplete("OK"));
-
 
390
            }
356
            MKRequestVersion();
391
            isloaded = true;
357
            yield break;
392
            yield break;
Line 358... Line 393...
358
        }
393
        }
359
 
394
 
Line 415... Line 450...
415
        }
450
        }
Line 416... Line 451...
416
       
451
       
417
        //---------------------------------------------------------------------
452
        //---------------------------------------------------------------------
418
        void MKRequestVersion()
453
        void MKRequestVersion()
-
 
454
        {
419
        {
455
            LogInfo("MK RequestVersion");
420
            string message = "";
456
            string message = "";
-
 
457
            message=sc.CreateMessage((char)'v', (char)0, message);
-
 
458
            if (sc.isOpen)
-
 
459
            {
421
            message=sc.CreateMessage((char)'v', (char)0, message);
460
                LogInfo("Version Send");
-
 
461
                sc.SerialWrite(message);
422
            sc.SerialWrite(message);
462
            }
Line 423... Line 463...
423
        }
463
        }
424
 
464
 
425
        string MKDecodeVersion(string message)
465
        string MKDecodeVersion(string message)