Beispiel #1
0
        private void bt_Click_Set(object sender, RoutedEventArgs e)
        {
            UInt32 hRegisterML01000 = 0x00000000;
            UInt32 hRegisterML01002 = 0x00000000;   //注意,L类型寄存器名只能为偶数!!

            UInt32[] dataML = new UInt32[1];

            r = CMotionAPI.ymcGetRegisterDataHandle("ML01000", ref hRegisterML01000);
            if (r != CMotionAPI.MP_SUCCESS)
            {
                MessageBox.Show(String.Format("获取寄存器引用错误 \n错误码 [ 0x{0} ]", r.ToString("X")));
                return;
            }

            r = CMotionAPI.ymcGetRegisterDataHandle("ML01002", ref hRegisterML01002);
            if (r != CMotionAPI.MP_SUCCESS)
            {
                MessageBox.Show(String.Format("获取寄存器引用错误 \n错误码 [ 0x{0} ]", r.ToString("X")));
                return;
            }

            dataML[0] = UInt32.Parse(S_ML01000.Text);

            r = CMotionAPI.ymcSetRegisterData(hRegisterML01000, 1, dataML);
            if (r != CMotionAPI.MP_SUCCESS)
            {
                MessageBox.Show(String.Format("设置寄存器值错误 \n错误码 [ 0x{0} ]", r.ToString("X")));
                return;
            }

            dataML[0] = UInt32.Parse(S_ML01002.Text);

            r = CMotionAPI.ymcSetRegisterData(hRegisterML01002, 1, dataML);
            if (r != CMotionAPI.MP_SUCCESS)
            {
                MessageBox.Show(String.Format("设置寄存器值错误 \n错误码 [ 0x{0} ]", r.ToString("X")));
                return;
            }
        }
Beispiel #2
0
        private void bt_Click_Get(object sender, RoutedEventArgs e)
        {
            UInt32 hRegisterML01000 = 0x00000000;
            UInt32 hRegisterML01002 = 0x00000000;

            UInt32[] dataML          = new UInt32[1];
            UInt32   pReadDataNumber = 0;

            r = CMotionAPI.ymcGetRegisterDataHandle("ML01000", ref hRegisterML01000);
            if (r != CMotionAPI.MP_SUCCESS)
            {
                MessageBox.Show(String.Format("获取寄存器引用错误 \n错误码 [ 0x{0} ]", r.ToString("X")));
                return;
            }
            r = CMotionAPI.ymcGetRegisterDataHandle("ML01002", ref hRegisterML01002);
            if (r != CMotionAPI.MP_SUCCESS)
            {
                MessageBox.Show(String.Format("获取寄存器引用错误 \n错误码 [ 0x{0} ]", r.ToString("X")));
                return;
            }

            CMotionAPI.ymcGetRegisterData(hRegisterML01000, 1, dataML, ref pReadDataNumber);
            if (r != CMotionAPI.MP_SUCCESS)
            {
                MessageBox.Show(String.Format("获取寄存器值错误 \n错误码 [ 0x{0} ]", r.ToString("X")));
                return;
            }
            G_ML01000.Text = dataML[0].ToString();
            CMotionAPI.ymcGetRegisterData(hRegisterML01002, 1, dataML, ref pReadDataNumber);
            if (r != CMotionAPI.MP_SUCCESS)
            {
                MessageBox.Show(String.Format("获取寄存器值错误 \n错误码 [ 0x{0} ]", r.ToString("X")));
                return;
            }
            G_ML01002.Text = dataML[0].ToString();
        }
Beispiel #3
0
        int GetRegisterDataHandle(int addr, EYMCDataType type, out uint hDataHandle)
        {
            Debug.Assert(INPUT_ORIGIN <= addr && addr <= OUTPUT_END);
            hDataHandle = 0;
#if SIMULATION_IO
            return(SUCCESS);
#endif

            string registerName;
            // register type
            if (addr < OUTPUT_ORIGIN)
            {
                registerName = EYMCRegisterType.I.ToString();
            }
            else
            {
                registerName = EYMCRegisterType.O.ToString();
            }

            // data type
            registerName += type.ToString();

            // address 계산 부분
            registerName += "0000";

            // get handle
            uint rc = CMotionAPI.ymcGetRegisterDataHandle(registerName, ref hDataHandle);
            if (rc != CMotionAPI.MP_SUCCESS)
            {
                string str = $"Error ymcGetRegisterDataHandle ML \nErrorCode [ 0x{rc.ToString("X")} ]";
                WriteLog(str, ELogType.Debug, ELogWType.Error, true);
                return(GenerateErrorCode(ERR_YMC_FAIL_GET_DATA_HANDLE));
            }

            return(SUCCESS);
        }