devicetypeinfluxdbwriter.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "devicetypeinfluxdbwriter.h"
  2. DeviceTypeInfluxdbWriter::DeviceTypeInfluxdbWriter(QObject *parent) : QObject(parent)
  3. {
  4. isSend = true;
  5. logthread = new logThread(this);
  6. logthread->start();
  7. mqttthread = new MqttThread(this);
  8. connect(mqttthread,&MqttThread::mqttLog,this,&DeviceTypeInfluxdbWriter::dataListLog);
  9. connect(mqttthread,&MqttThread::sendDevData,this,&DeviceTypeInfluxdbWriter::receiveDevData);
  10. timer = new QTimer(this);
  11. connect(timer,&QTimer::timeout,this,&DeviceTypeInfluxdbWriter::time_out);
  12. networkmanager = new QNetworkAccessManager(this);
  13. connect(networkmanager,&QNetworkAccessManager::finished,this,&DeviceTypeInfluxdbWriter::finishedSlot);
  14. }
  15. DeviceTypeInfluxdbWriter::~DeviceTypeInfluxdbWriter()
  16. {
  17. logthread->stop();
  18. }
  19. void DeviceTypeInfluxdbWriter::start()
  20. {
  21. timer->start(200);
  22. mqttthread->start();
  23. }
  24. void DeviceTypeInfluxdbWriter::time_out()
  25. {
  26. if((datalist.length()>0)&&(isSend)){
  27. isSend = false;
  28. QString data = datalist.first();
  29. QByteArray Report = data.toUtf8();
  30. QNetworkRequest *req = new QNetworkRequest();
  31. req->setUrl(QUrl("http://172.16.120.69:8086/write?db=USKTSDB_B&u=root&p=root"));
  32. req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
  33. req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
  34. QNetworkReply *reply = networkmanager->post(*req,Report);
  35. QReplyTimeout *pTimeout = new QReplyTimeout(reply,10000);
  36. connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout()));
  37. }
  38. }
  39. void DeviceTypeInfluxdbWriter::reply_timeout()
  40. {
  41. if(datalist.length()>0){
  42. datalist.removeFirst();
  43. }
  44. isSend = true;
  45. }
  46. void DeviceTypeInfluxdbWriter::finishedSlot(QNetworkReply *reply)
  47. {
  48. if(datalist.length()>0){
  49. if(reply->error()==QNetworkReply::NoError){
  50. QString bak_info = QString::fromUtf8(reply->readAll());
  51. }else{
  52. }
  53. datalist.removeFirst();
  54. }
  55. reply->deleteLater();
  56. isSend = true;
  57. }
  58. void DeviceTypeInfluxdbWriter::dataListLog(QString log)
  59. {
  60. logthread->appendData(log);
  61. }
  62. void DeviceTypeInfluxdbWriter::receiveDevData(QString data)
  63. {
  64. datalist.append(data);
  65. }