1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #include "DeviceController.h"
- #include "JobModule.h"
- #include "RunnableModule.h"
- #include "LibraryLoader.h"
- #include <QtCore/QDebug>
- #include <typeinfo>
- #include <type_traits>
- DeviceController::DeviceController()
- {
- m_pModule = nullptr;
- m_pDataConsumer = nullptr;
- }
- void DeviceController::regConsumer(DataConsumer* pDC)
- {
- m_pDataConsumer = pDC;
- }
- void DeviceController::OnData(std::string name,QVariant val)
- {
- // qDebug() << __FILE__ << __LINE__ << name.c_str() << " val = " << val.toString();
- if( m_pDataConsumer != nullptr )
- {
- m_pDataConsumer->OnData(name,val);
- }
- }
- void DeviceController::OnSubData(std::string name,std::string val)
- {
- if( m_pModule != nullptr )
- {
- m_pModule->OnSubData(name,val);
- }
- }
- void DeviceController::CreateDevice(const std::string name,const std::list<AlarmRuler>& lst)
- {
- std::string assemblyName = name;
- BaseModule* pModule = LibraryLoader::load<BaseModule>(assemblyName);
- if( pModule == nullptr )
- {
- qCritical() << __FILE__ << __LINE__ << " load " << assemblyName.c_str() << " failed.";
- return;
- }
- // 组装一下数据,要不就得改接口,填充到Properties
- ModuleInfo mi;
- std::list<AlarmRuler>::iterator itr;
- for(itr = lst.begin(); itr != lst.end(); ++itr)
- {
- DataItem data;
- mi.Properties.push_back( data);
- }
- m_pModule = pModule;
- m_pModule->Setup(mi);
- m_pModule->regConsumer(this);
- if( m_pModule->isInheritedFrom("RunnableModule"))
- {
- RunnableModule* pRunable = dynamic_cast<RunnableModule*>(m_pModule);
- pRunable->Run();
- }
- if( m_pModule->isInheritedFrom("JobModule"))
- {
- JobModule* pJob = dynamic_cast<JobModule*>(m_pModule);
- pJob->Process(QObject());
- }
- }
|