private void disposeController()
 {
     if (m_controller != null)
     {
         lock (m_controller)
         {
             // Close the port
             m_controller.Dispose();
             m_controller = null;
         }
     }
 }
        private void ensureController()
        {
            _service.LogInfoViaService("TrackRoamerBotHardwareController: ensureController()  sComPort=" + sComPort + "  m_controller=" + m_controller);

            if (m_controller == null)
            {
                m_controller = new ControllerRQAX2850(sComPort);

                m_controller.onValueReceived_EncoderLeftAbsolute  += new OnValueReceived(m_controller_onValueReceived_EncoderLeftAbsolute);
                m_controller.onValueReceived_EncoderRightAbsolute += new OnValueReceived(m_controller_onValueReceived_EncoderRightAbsolute);

                m_controller.onValueReceived_EncoderSpeed += new OnValueReceived(m_controller_onValueReceived_EncoderSpeed);

                m_controller.onValueReceived_DigitalInputF     += new OnValueReceived(m_controller_onValueReceived_DigitalInputF);
                m_controller.onValueReceived_DigitalInputEmerg += new OnValueReceived(m_controller_onValueReceived_DigitalInputEmerg);

                m_controller.init();
            }

            _service.LogInfoViaService("TrackRoamerBotHardwareController: ensureController() finished");
        }