MotionModelManager.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "stdafx.h"
  2. #include "MotionModelManager.h"
  3. #include "IMotionModel.h"
  4. #include "IMotionModelFactory.h"
  5. using namespace DIOS::Dev::Detail::MachineryECOM;
  6. MotionModelManager *MotionModelManager::m_instance = nullptr;
  7. MotionModelManager::MotionModelManager()
  8. {
  9. }
  10. MotionModelManager::~MotionModelManager()
  11. {
  12. }
  13. MotionModelManager *MotionModelManager::Instance()
  14. {
  15. if (m_instance == nullptr)
  16. {
  17. m_instance = new MotionModelManager();
  18. }
  19. return m_instance;
  20. }
  21. void MotionModelManager::Initialize(
  22. IMotionModelFactory *factory,
  23. IMachineryManager *machineryManager,
  24. IPositionManager *coordinates,
  25. const std::map<std::string, int> &modelList)
  26. {
  27. auto it = modelList.begin();
  28. for (; it != modelList.end(); ++it)
  29. {
  30. auto model = factory->CreateModel((MOTION_MODEL_TYPE)it->second);
  31. if (model)
  32. {
  33. m_motionModels[it->first] = model;
  34. model->Initialize(machineryManager, coordinates);
  35. }
  36. }
  37. }
  38. IMotionModel *MotionModelManager::Resove(const std::string &name)
  39. {
  40. if (m_motionModels.find(name) == m_motionModels.end())
  41. {
  42. return nullptr;
  43. }
  44. return m_motionModels[name];
  45. }