oneitem.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "oneitem.h"
  2. #include "JobModule.h"
  3. #include "RunnableModule.h"
  4. #include "LibraryLoader.h"
  5. #include <QtCore/QDebug>
  6. #include <typeinfo>
  7. #include <type_traits>
  8. oneitem::oneitem()
  9. {
  10. m_pDataConsumer = nullptr;
  11. m_pModule = nullptr;
  12. }
  13. void oneitem::OnData(std::string name,QVariant val)
  14. {
  15. // 这是从里往外传的数据(设备控制命令)
  16. //源头是模块,我倒一步手,传递给maincontrol里,通过maincontrol写redis
  17. if( m_pDataConsumer != nullptr )
  18. {
  19. m_pDataConsumer->OnData(name,val);
  20. }
  21. }
  22. void oneitem::OnSubData(std::string name,std::string val)
  23. {
  24. // 从td读出来的测量数据,通过maincontrol给到这里
  25. // 通过这里在给到模块里
  26. if( m_pModule != nullptr )
  27. {
  28. m_pModule->OnSubData(name,val);
  29. }
  30. }
  31. void oneitem::regConsumer(DataConsumer* pDC)
  32. {
  33. m_pDataConsumer = pDC;
  34. }
  35. void oneitem::createmodule(const ModuleInfo& mi)
  36. {
  37. std::string assemblyName = mi.AssemblyName;
  38. std::string className = mi.ClassName;
  39. BaseModule* pModule = LibraryLoader::load<BaseModule>(assemblyName);
  40. if( pModule == nullptr )
  41. {
  42. qCritical() << __FILE__ << __LINE__ << " load " << assemblyName.c_str() << " failed.";
  43. return;
  44. }
  45. m_pModule = pModule;
  46. m_pModule->Setup(mi);
  47. m_pModule->regConsumer(this);
  48. if( m_pModule->isInheritedFrom("RunnableModule"))
  49. {
  50. RunnableModule* pRunable = dynamic_cast<RunnableModule*>(m_pModule);
  51. pRunable->Run();
  52. }
  53. if( m_pModule->isInheritedFrom("JobModule"))
  54. {
  55. JobModule* pJob = dynamic_cast<JobModule*>(m_pModule);
  56. pJob->Process(QObject());
  57. }
  58. }