Ejemplo n.º 1
0
 private AccelerometerReading(CoreMotion.CMAccelerometerData accelerometerData)
 {
     _accelerometerData = accelerometerData;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 建立通讯
        /// </summary>
        /// <param name="infoHardWare"></param>
        private void EstablishCommunication(object infoHardWare)
        {
            var softservoInfo = infoHardWare as SoftservoControlerInfo;
            int ret;

            Thread.Sleep(5000);

            cmApi           = new CoreMotion(wmx);
            fx_EventControl = new EventControl(wmx);
            fx_ApiBuffer    = new ApiBuffer(wmx);
            ecapi           = new EcApiLib(wmx);

            fx_ListMotion = new ListMotion(wmx);

            wmx_IO = new Io(wmx);
            //设置系统参数
            ret = cmApi.Config.ImportAndSetAll(softservoInfo.m_strConfigPath);
            if (ret != 0)
            {
                string errorCode = "";
                errorCode = WMX3Api.ErrorToString(ret);
                //  Global.logger.ErrorFormat("WMX3参数获取失败!错误信息:{0}", errorCode);
                //return false;
            }
            //开始进行通讯
            int wd_count = 0;

            do
            {
                ret = wmx.StartCommunication();//通讯函数
                Thread.Sleep(500);
                wd_count++;
                cmApi.GetStatus(ref status);
            } while ((status.EngineState == EngineState.Communicating) && (wd_count < 10));//确认是否通讯成功

            if (status.EngineState != EngineState.Communicating)
            {
                // string ErrorCode = "";
                // wmx.ErrorToString(ret, ref ErrorCode, 128);
                string errorCode = WMX3Api.ErrorToString(ret); //获取错误代码
                // Global.logger.ErrorFormat("WMX3通讯失败,错误信息:{0}!", errorCode);
                //return false;
            }

            //清除轴警信息
            for (int i = 0; i < 8; i++)
            {
                cmApi.AxisControl.ClearAmpAlarm(i);
                cmApi.AxisControl.ClearAxisAlarm(i);
            }

            //轴上使能
            for (int i = 0; i < 8; i++)
            {
                cmApi.AxisControl.SetServoOn(i, 1);
            }

            //检查所用到的轴有没上使能
            Thread.Sleep(1000);
            cmApi.GetStatus(ref status);
            for (int i = 0; i < 8; i++)
            {
                if (status.AxesStatus[i].ServoOn == false)
                {
                    //使用失败的处理。
                    //    Global.logger.ErrorFormat("WMX3 轴{0}使能失败!", i);
                    //return false;
                }
            }
            //timer1.Interval = 50;
            //timer1.Enabled = true;
            ret = cmApi.Motion.CreateSplineBuffer(5, 1024);
            if (ret != 0)
            {
                //     Global.logger.ErrorFormat("WMX3创建缓存出现错误!错误信息:{0}", WMX3Api.ErrorToString(ret));
            }

            while (bInitOK)
            {
                Thread.Sleep(10);
                GetAllMotionStatus();
                GetAllIOStatus();
            }
        }
Ejemplo n.º 3
0
 private GyrometerReading(CoreMotion.CMGyroData gyrometerData)
 {
     _gyrometerData = gyrometerData;
 }