serialthreadhandle.cpp 924 B

12345678910111213141516171819202122232425262728293031
  1. #include "serialthreadhandle.h"
  2. #include "globalinfo.h"
  3. SerialThreadHandle::SerialThreadHandle(QObject *parent) : QObject(parent),th(nullptr)/*,port(nullptr)*/
  4. {
  5. }
  6. void SerialThreadHandle::start()
  7. {
  8. if(th == nullptr){
  9. th = new QThread(this);
  10. connect(th,&QThread::started,this,&SerialThreadHandle::updateConfig);
  11. port = new RtuPort(this);
  12. auto config = GlobalInfo::this_()->config();
  13. connect(config,&ConfigInfo::configUpdate,this,&SerialThreadHandle::updateConfig,Qt::QueuedConnection);
  14. this->moveToThread(th);
  15. th->start();
  16. }
  17. }
  18. void SerialThreadHandle::updateConfig()
  19. {
  20. if(port == nullptr) return;
  21. auto config = GlobalInfo::this_()->config();
  22. auto old = port->handle();
  23. auto handle = SerialBaseHandle::getHandler(config->portType);// todo:
  24. port->start(config->portName,config->portBaudRate.toInt(),handle);
  25. if(old) delete old;
  26. }