dmpdatacore.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #include "dmpdatacore.h"
  2. #include "../ytDMPServerDog/dogshm.h"
  3. DmpDataCore::DmpDataCore(QObject *parent) : QObject(parent)
  4. {
  5. isSending1 = true;
  6. bstrlist.clear();
  7. pointstrlist.clear();
  8. timer = new QTimer(this);
  9. connect(timer,&QTimer::timeout,this,&DmpDataCore::time_out);
  10. dataserver= new DMPDataServer(this);
  11. connect(dataserver,&DMPDataServer::CommData,this,&DmpDataCore::CommData);
  12. connect(dataserver,&DMPDataServer::DatabaseData,this,&DmpDataCore::DatabaseData);
  13. connect(dataserver,&DMPDataServer::getERealtimeValue,this,&DmpDataCore::getRealtimeValue);
  14. logthread = new LogThread(this);
  15. logthread->start();
  16. dbthread = new DatabaseThread(this);
  17. dbthread->start();
  18. wsserver = new WebsocketServer(this);
  19. networkmanager1 = new QNetworkAccessManager(this);
  20. connect(networkmanager1,&QNetworkAccessManager::finished,this,&DmpDataCore::finishedSlot1);
  21. mqttIdx = 1;
  22. m_client = new QMQTT::Client(QHostAddress("47.98.201.73"),1883,this);
  23. connect(m_client,&QMQTT::Client::connected,this,&DmpDataCore::onConnected);
  24. m_client->setUsername("usky");
  25. m_client->setPassword("usky");
  26. m_client->setCleanSession(true);
  27. m_client->connectToHost();
  28. }
  29. DmpDataCore::~DmpDataCore()
  30. {
  31. logthread->stop();
  32. dbthread->stop();
  33. }
  34. void DmpDataCore::start()
  35. {
  36. timer->start(1000);
  37. dataserver->start();
  38. }
  39. void DmpDataCore::onConnected()
  40. {
  41. printf("mqtt connected\n");
  42. }
  43. void DmpDataCore::time_out()
  44. {
  45. uint t = QDateTime::currentDateTime().toTime_t();
  46. dogshm->data_feedtime = t;
  47. if((bstrlist.length()>0)&&(isSending1)){
  48. isSending1 = false;
  49. QString data = bstrlist.first();
  50. QByteArray Report = data.toUtf8();
  51. QNetworkRequest *req = new QNetworkRequest();
  52. req->setUrl(QUrl("http://172.16.120.69:8086/write?db=USKTSDB_A&u=root&p=root"));
  53. req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
  54. req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
  55. QNetworkReply *reply = networkmanager1->post(*req,Report);
  56. QReplyTimeout *pTimeout = new QReplyTimeout(reply,10000);
  57. connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout1()));
  58. }
  59. if(pointstrlist.length()>0){
  60. QString data = pointstrlist.first();
  61. if((m_client->connectionState() == QMQTT::STATE_DISCONNECTED)||(m_client->connectionState() == QMQTT::STATE_INIT)){
  62. m_client->connectToHost();
  63. }
  64. m_client->publish(QMQTT::Message(mqttIdx++,"data-collector",data.toUtf8()));
  65. if(mqttIdx > 9999)
  66. mqttIdx = 1;
  67. pointstrlist.removeFirst();
  68. }
  69. }
  70. void DmpDataCore::reply_timeout1()
  71. {
  72. logthread->appendData(QString("reply_timeout1"));
  73. if(bstrlist.length()>0){
  74. bstrlist.removeFirst();
  75. }
  76. isSending1 = true;
  77. }
  78. void DmpDataCore::finishedSlot1(QNetworkReply *reply)
  79. {
  80. if(bstrlist.length()>0){
  81. if(reply->error()==QNetworkReply::NoError){
  82. QString bak_info = QString::fromUtf8(reply->readAll());
  83. logthread->appendData(bak_info);
  84. }else{
  85. QString bak_info = QString::fromUtf8(reply->readAll());
  86. logthread->appendData(QString("QNetworkReply1::Error [%1]").arg(bak_info));
  87. }
  88. bstrlist.removeFirst();
  89. }
  90. reply->deleteLater();
  91. isSending1 = true;
  92. }
  93. void DmpDataCore::CommData(QString data)
  94. {
  95. logthread->appendData(data);
  96. }
  97. void DmpDataCore::DatabaseData(QString sql)
  98. {
  99. dbthread->appendSql(sql);
  100. }
  101. void DmpDataCore::getRealtimeValue(QString DeviceCode, QString bstr, QString pointstr, QDateTime t)
  102. {
  103. bstrlist.append(bstr);
  104. pointstrlist.append(pointstr);
  105. QString tmp = QString("[%1] bstr: [%2], pointstr: [%3]").arg(QDateTime::currentDateTime().toString("yyyy-mm-dd HH:mm:ss")).arg(bstr).arg(pointstr);
  106. logthread->appendData(tmp);
  107. }