Bläddra i källkod

上传文件至 'CamCore'

hanzhengyi 4 år sedan
förälder
incheckning
d84402d039
5 ändrade filer med 219 tillägg och 0 borttagningar
  1. 77 0
      CamCore/ttsthreads.cpp
  2. 34 0
      CamCore/ttsthreads.h
  3. BIN
      CamCore/ttsthreads.o
  4. 75 0
      CamCore/wechartthreads.cpp
  5. 33 0
      CamCore/wechartthreads.h

+ 77 - 0
CamCore/ttsthreads.cpp

@@ -0,0 +1,77 @@
+#include "ttsthreads.h"
+
+ttsThreads::ttsThreads(QObject *parent, quint16 idx, QString ip, QString path, quint16 port) :
+    QThread(parent)
+{
+    Idx = idx;
+    DestIp = ip;
+    DestPath = path;
+    DestPort = port;
+    DataList.clear();
+}
+
+void ttsThreads::appendData(QString data)
+{
+    QString Data = QString("POST %1 HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept: */*\r\nConnection: keep-alive\r\nCache-Control:  no-cache\r\nContent-Length: %2\r\nAccept-Encoding: gzip\r\nAccept-Language: zh-CN,en,*\r\nUser-Agent: Mozilla/5.0\r\nHost: %3:%4\r\n\r\n%5")
+            .arg(DestPath).arg(data.length()).arg(DestIp).arg(DestPort).arg(data);
+    DataList.append(Data);
+}
+
+void ttsThreads::stoptts()
+{
+    keepWorking = false;
+}
+
+void ttsThreads::ttslog(quint16 idx, QDateTime t, QString data, bool dirflag)
+{
+    if(dirflag)
+        printf("[ %04d-%02d-%02d %02d:%02d:%02d >>> ] %s\n",
+               t.date().year(),t.date().month(),t.date().day(),
+               t.time().hour(),t.time().minute(),t.time().second(),
+               data.toUtf8().data());
+    else
+        printf("[ %04d-%02d-%02d %02d:%02d:%02d <<< ] %s\n",
+               t.date().year(),t.date().month(),t.date().day(),
+               t.time().hour(),t.time().minute(),t.time().second(),
+               data.toUtf8().data());
+}
+
+void ttsThreads::run()
+{
+    quint8 cur;
+    for(int i=0;i<16;i++){
+        so[i] = new QTcpSocket;
+    }
+    keepWorking = true;
+    cur=0;
+    while(keepWorking){
+        if(DataList.length()>0){
+            QString data = DataList.first();
+            so[cur]->connectToHost(QHostAddress(DestIp),DestPort,QIODevice::ReadWrite);
+            if(so[cur]->waitForConnected()){
+                so[cur]->write(data.toUtf8());
+                so[cur]->flush();
+                ttslog(Idx,QDateTime::currentDateTime(),data,true);
+                DataList.removeFirst();
+                if(so[cur]->waitForReadyRead()){
+                    QByteArray ret = so[cur]->readAll();
+                    if(ret.length()>512)
+                        ret = ret.mid(0,512);
+                    ttslog(Idx,QDateTime::currentDateTime(),QString(ret),false);
+                    so[cur]->close();
+                }else{
+                    ttslog(Idx,QDateTime::currentDateTime(),QString("timeout"),false);
+                    so[cur]->abort();
+                }
+            }
+            cur++;
+            cur &= 0x0f;
+        }
+        usleep(100000);
+    }
+    for(int i=0;i<16;i++){
+        if(so[i]->isOpen())
+            so[i]->abort();
+        so[i]->deleteLater();
+    }
+}

+ 34 - 0
CamCore/ttsthreads.h

@@ -0,0 +1,34 @@
+#ifndef TTSTHREADS_H
+#define TTSTHREADS_H
+
+#include <QThread>
+#include <QTcpSocket>
+#include <QStringList>
+#include <QHostAddress>
+#include <QDateTime>
+
+class ttsThreads : public QThread
+{
+    Q_OBJECT
+public:
+    explicit ttsThreads(QObject *parent = NULL, quint16 idx=0, QString ip="", QString path="", quint16 port=0);
+    void appendData(QString data);
+    void stoptts();
+    void run();
+    void ttslog(quint16 idx, QDateTime t, QString data, bool dirflag);
+
+signals:
+
+public slots:
+
+private:
+    bool keepWorking;
+    quint16 Idx;
+    QString DestIp;
+    QString DestPath;
+    QStringList DataList;
+    QTcpSocket *so[16];
+    quint16 DestPort;
+};
+
+#endif // TTSTHREADS_H

BIN
CamCore/ttsthreads.o


+ 75 - 0
CamCore/wechartthreads.cpp

@@ -0,0 +1,75 @@
+#include "wechartthreads.h"
+
+WechartThreads::WechartThreads(QObject *parent, quint16 idx, QString ip, QString path) :
+    QThread(parent)
+{
+    Idx = idx;
+    DestIp = ip;
+    DestPath = path;
+    DataList.clear();
+}
+
+void WechartThreads::appendData(QString data)
+{
+    QString Data = QString("POST %1 HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded\r\nAccept: */*\r\nConnection: keep-alive\r\nCache-Control:  no-cache\r\nContent-Length: %2\r\nAccept-Encoding: gzip\r\nAccept-Language: zh-CN,en,*\r\nUser-Agent: Mozilla/5.0\r\nHost: %3\r\n\r\n%4")
+            .arg(DestPath).arg(data.length()).arg("iot.usky.cn").arg(data);
+    DataList.append(Data);
+}
+
+void WechartThreads::stopwx()
+{
+    keepWorking = false;
+}
+
+void WechartThreads::wxchart(quint16 idx, QDateTime t, QString data, bool dirflag){
+    if(dirflag)
+        printf("[ %04d-%02d-%02d %02d:%02d:%02d >>> ] %s\n",
+               t.date().year(),t.date().month(),t.date().day(),
+               t.time().hour(),t.time().minute(),t.time().second(),
+               data.toUtf8().data());
+    else
+        printf("[ %04d-%02d-%02d %02d:%02d:%02d <<< ] %s\n",
+               t.date().year(),t.date().month(),t.date().day(),
+               t.time().hour(),t.time().minute(),t.time().second(),
+               data.toUtf8().data());
+}
+
+void WechartThreads::run()
+{
+    quint8 cur;
+    for(int i=0;i<16;i++){
+        so[i] = new QTcpSocket;
+    }
+    keepWorking = true;
+    cur=0;
+    while(keepWorking){
+        if(DataList.length()>0){
+            QString data = DataList.first();
+            so[cur]->connectToHost(QHostAddress(DestIp),80,QIODevice::ReadWrite);
+            if(so[cur]->waitForConnected()){
+                so[cur]->write(data.toUtf8());
+                so[cur]->flush();
+                wxchart(Idx,QDateTime::currentDateTime(),data,true);
+                DataList.removeFirst();
+                if(so[cur]->waitForReadyRead()){
+                    QByteArray ret = so[cur]->readAll();
+                    if(ret.length()>512)
+                        ret = ret.mid(0,512);
+                    wxchart(Idx,QDateTime::currentDateTime(),QString(ret),false);
+                    so[cur]->close();
+                }else{
+                    wxchart(Idx,QDateTime::currentDateTime(),QString("timeout"),false);
+                    so[cur]->abort();
+                }
+            }
+            cur++;
+            cur &= 0x0f;
+        }
+        usleep(100000);
+    }
+    for(int i=0;i<16;i++){
+        if(so[i]->isOpen())
+            so[i]->abort();
+        so[i]->deleteLater();
+    }
+}

+ 33 - 0
CamCore/wechartthreads.h

@@ -0,0 +1,33 @@
+#ifndef WECHARTTHREADS_H
+#define WECHARTTHREADS_H
+
+#include <QThread>
+#include <QTcpSocket>
+#include <QStringList>
+#include <QHostAddress>
+#include <QDateTime>
+
+class WechartThreads : public QThread
+{
+    Q_OBJECT
+public:
+    explicit WechartThreads(QObject *parent = NULL, quint16 idx=0, QString ip="", QString path="");
+    void appendData(QString data);
+    void stopwx();
+    void run() override;
+    void wxchart(quint16 idx, QDateTime t, QString data, bool dirflag);
+    
+signals:
+
+public slots:
+
+private:
+    bool keepWorking;
+    quint16 Idx;
+    QString DestIp;
+    QString DestPath;
+    QStringList DataList;
+    QTcpSocket *so[8];
+};
+
+#endif // WECHARTTHREADS_H