public static void ReadAllIo(object o) { while (true) { int CardIndex = 0; int axisIndex = 0; for (MotionCardManufacturer i = 0; i < MotionCardManufacturer.MotionCardManufacturer_max; i++) { NewCtrlCardBase Base = NewCtrlCardV0.tag_NewCtrlCardBase[(int)i]; short j = 0; short n = 0; short mInIo = 0; if (Base == null || tag_CardHave[(int)i] == 0) { continue; } while (j < NewCtrlCardV0.tag_CardCount[(int)i]) { ulong pLimitNValue = 0; ulong pLimitPValue = 0; ulong pOrgValue = 0; ulong pCardAxisAlarmValue = 0; ulong pOnAxisEnableValue = 0; ulong pCardInIO = 0; ulong pCardOutIO = 0; ulong one = 1; mInIo = 0; while (mInIo < 64) { bool bInio = true; bool bOutio = true; Base.SR_GetInputBit(j, mInIo, out bInio); Base.SR_GetOutputBit(j, mInIo, out bOutio); if (bInio == true) { pCardInIO = pCardInIO + (ulong)(one << mInIo); } else { } if (bOutio == true) { pCardOutIO = pCardOutIO + (ulong)(one << mInIo); } mInIo++; } n = 1; while (n <= NewCtrlCardV0.tag_CardAxisCount[(int)i]) { bool LimitNvar = true; bool LimitPvar = true; bool LimitOrgvar = true; bool bCardAxisAlarmValue = true; bool bOnAxisEnableValue = true; double bOnAxisEncPosChange = 0; double bOnAxisPrfPosChange = 0; Base.SR_GetLimitNInput(j, n, out LimitNvar); Base.SR_GetLimitPInput(j, n, out LimitPvar); Base.SR_GetOriginInput(j, n, out LimitOrgvar); Base.SR_GetAlarmInput(j, n, out bCardAxisAlarmValue); // Base.SR_GetServoEnable(j, n, out bOnAxisEnableValue); //Base.SR_GetEncPos(j, n, ref bOnAxisEncPosChange); //Base.SR_GetPrfPos(j, n, ref bOnAxisPrfPosChange); if (LimitNvar == true) { pLimitNValue = pLimitNValue + (ulong)(one << n); } if (LimitPvar == true) { pLimitPValue = pLimitPValue + (ulong)(one << n); } if (LimitOrgvar == true) { pOrgValue = pOrgValue + (ulong)(one << n); } if (bCardAxisAlarmValue == true) { pCardAxisAlarmValue = pCardAxisAlarmValue + (ulong)(one << n); } if (bOnAxisEnableValue == true) { pOnAxisEnableValue = pOnAxisEnableValue + (ulong)(one << n); } Base.SR_GetEncPos(j, n, ref bOnAxisEncPosChange); Base.SR_GetPrfPos(j, n, ref bOnAxisPrfPosChange); if (tag_OnAxisEncPosChange[axisIndex] != bOnAxisEncPosChange || tag_IO_refresh > 0) { tag_OnAxisEncPosChange[axisIndex] = bOnAxisEncPosChange; OnAxisEncPosChange((int)i, j, n, (int)bOnAxisEncPosChange); } if (tag_OnAxisPrfPosChange[axisIndex] != bOnAxisPrfPosChange || tag_IO_refresh > 0) { tag_OnAxisPrfPosChange[axisIndex] = bOnAxisPrfPosChange; OnAxisPrfPosChange((int)i, j, n, (int)bOnAxisPrfPosChange); } axisIndex++; n++; } if (tag_CardAxisLimitNIO[CardIndex] != pLimitNValue || tag_IO_refresh > 0) { tag_CardAxisLimitNIO[CardIndex] = pLimitNValue; OnAxisLimitNChange((int)i, j, n, pLimitNValue); } if (tag_CardAxisLimitPIO[CardIndex] != pLimitPValue || tag_IO_refresh > 0) { tag_CardAxisLimitPIO[CardIndex] = pLimitPValue; OnAxisLimitPChange((int)i, j, n, pLimitPValue); } if (tag_CardAxisOrgIO[CardIndex] != pOrgValue || tag_IO_refresh > 0) { tag_CardAxisOrgIO[CardIndex] = pOrgValue; OnAxisHomeChange((int)i, j, n, pOrgValue); } if (tag_CardAxisAlarm[CardIndex] != pCardAxisAlarmValue || tag_IO_refresh > 0) { tag_CardAxisAlarm[CardIndex] = pCardAxisAlarmValue; OnAxisAlarmChange((int)i, j, n, pCardAxisAlarmValue); } if (pCardInIO != tag_CardInIO[CardIndex] || tag_IO_refresh > 0) { tag_CardInIO[CardIndex] = pCardInIO; OnInputIOChange((int)i, j, pCardInIO); } if (pCardOutIO != tag_CardInIO[CardIndex] || tag_IO_refresh > 0) { tag_CardOutIO[CardIndex] = pCardOutIO; OnOutputIOChange((int)i, j, pCardOutIO); } if (tag_IO_refresh > 0) { tag_IO_refresh--; } CardIndex++; j++; } // } Thread.Sleep(1); } }