ServoDriveManager.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "stdafx.h"
  2. #include "ServoDriveManager.h"
  3. #include "IServoDrive.h"
  4. #include "IServoDriveFactory.h"
  5. #include "ConfigurerServoDrive.h"
  6. using namespace DIOS::Dev::Detail::MachineryECOM;
  7. ServoDriveManager *ServoDriveManager::m_instance = nullptr;
  8. ServoDriveManager::ServoDriveManager()
  9. {
  10. }
  11. ServoDriveManager::~ServoDriveManager()
  12. {
  13. }
  14. ServoDriveManager *ServoDriveManager::Instance()
  15. {
  16. if (m_instance == nullptr)
  17. {
  18. m_instance = new ServoDriveManager();
  19. }
  20. return m_instance;
  21. }
  22. void ServoDriveManager::Initialize(IServoDriveFactory *factory,const std::vector<std::string> &servoDriveNameList)
  23. {
  24. //根据配置装载伺服驱动类型
  25. for (size_t i = 0; i < servoDriveNameList.size();++i)
  26. {
  27. auto servoName = servoDriveNameList[i];
  28. auto sevoType = ConfigurerServoDrive::GetServoDriveType(servoName);
  29. auto sevoNumber = ConfigurerServoDrive::GetServoDriveNumber(servoName);
  30. if (sevoType != "")
  31. {
  32. auto servo = factory->Create(sevoType);
  33. if (servo)
  34. {
  35. servo->Initialize(sevoNumber);
  36. m_servoDrives[servoName] = servo;
  37. }
  38. }
  39. }
  40. }
  41. IServoDrive *ServoDriveManager::Resove(const std::string &servoDriveName)
  42. {
  43. if (m_servoDrives.find(servoDriveName) != m_servoDrives.end())
  44. {
  45. return m_servoDrives[servoDriveName];
  46. }
  47. return nullptr;
  48. }