فهرست منبع

Merge branch 'dev-zyj' of hanzhengyi/DataProcessService into master

James 2 هفته پیش
والد
کامیت
218bebce3f

+ 9 - 2
DataProcessService/ytRTUProcess/rtucommthread.cpp

@@ -175,9 +175,16 @@ void RtuCommThread::checkIOvalue(QByteArray data, QDateTime t)
                 }
             }
         }else if(len==4){
-            if(rtuList->rtus[E3d.at(0)&0x0f].Enabled==0x01)
+//            if(rtuList->rtus[E3d.at(0)&0x0f].Enabled==0x01)
+//            {
+//                emit getIoReport(DevIdx, ((E3d.at(0)>>4)&0x0f)*10+(E3d.at(0)&0x0f), E3d, (E3d.at(1)&0x01)==0x01?1:0, t);
+//            }
+            for(int i=1;i<16;i++)
             {
-                emit getIoReport(DevIdx, ((E3d.at(0)>>4)&0x0f)*10+(E3d.at(0)&0x0f), E3d, (E3d.at(1)&0x01)==0x01?1:0, t);
+                if((rtuList->rtus[DevIdx].Port[i].Enabled==0x01)&&((i&0x0f)==(E3d.at(0)&0x0f)))
+                {
+                    emit getIoReport(DevIdx, ((E3d.at(0)>>4)&0x0f)*10+(E3d.at(0)&0x0f), E3d, (E3d.at(1)&0x01)==0x01?1:0, t);
+                }
             }
         }
     }

+ 9 - 1
DataProcessService/ytUserInfoProcess/userinfoprocesscore.cpp

@@ -519,13 +519,21 @@ QString UserInfoProcessCore::getOwnerAddr(quint64 devid, quint8 sysAddr, quint32
     if(!db.isOpen())
         db.open();
     if(db.isOpen()){
-        if((devid==90004)||(devid==90048)||(devid==90051)||(devid==90085)||(devid==90086)||(devid==90142)||(devid==90145)||(devid==90151)||(devid==90152)||(devid==90153)){
+//        if((devid==90004)||(devid==90048)||(devid==90051)||(devid==90085)||(devid==90086)||(devid==90142)||(devid==90145)||(devid==90151)||(devid==90152)||(devid==90153)){
+//            sql = QString("select `area`, `type`, `info` from `sp_owner_point` where `device_code`=%1 and `Com_idx`=%2 and `loop`=%3 and `pno`=%4 and `host_num`=%5")
+//                    .arg(devid).arg(sysAddr).arg(areaid).arg(point).arg(hostNum);
+//        }else{
+//            sql = QString("select `area`, `type`, `info` from `sp_owner_point` where `device_code`=%1 and `Com_idx`=%2 and `loop`=%3 and `pno`=%4")
+//                    .arg(devid).arg(sysAddr).arg(areaid).arg(point);
+//        }
+        if(hostNum != 0){
             sql = QString("select `area`, `type`, `info` from `sp_owner_point` where `device_code`=%1 and `Com_idx`=%2 and `loop`=%3 and `pno`=%4 and `host_num`=%5")
                     .arg(devid).arg(sysAddr).arg(areaid).arg(point).arg(hostNum);
         }else{
             sql = QString("select `area`, `type`, `info` from `sp_owner_point` where `device_code`=%1 and `Com_idx`=%2 and `loop`=%3 and `pno`=%4")
                     .arg(devid).arg(sysAddr).arg(areaid).arg(point);
         }
+        this->appendLOg(QString("+++++++++++++ sql +++++  %1").arg(sql));
         QSqlQuery qry = db.exec(sql);
         if(qry.next()){
             QString area = qry.value(0).toString();

+ 1 - 0
DataProcessService/ytWarterMkProcess/MkShm.h

@@ -5,6 +5,7 @@
 #define SSSHM_PORT    10019
 
 typedef struct {
+    int id;
     char Device_Code[40];
     char Device_Name[200];
     char Device_Info[500];

+ 7 - 6
DataProcessService/ytWarterMkProcess/databasethread.cpp

@@ -70,7 +70,7 @@ void DatabaseThread::check_devicelist()
     printf("database thread check_devicelist()\n");
     uint nowTime = QDateTime::currentDateTime().toTime_t();
     hour=QTime::currentTime().hour();
-    QString sql = QString("select owner_code, owner_name, unitinfo, owner_xh, company, dwtype from sp_owner where dwtype in (2,4,128) and owner_xh !=''");
+    QString sql = QString("select id, owner_code, owner_name, unitinfo, owner_xh, company, dwtype from sp_owner where dwtype in (2,4,5,128) and owner_xh !=''");
     QSqlQuery qry = db.exec(sql);
     int nrow= 0;
     while(qry.next()){
@@ -93,11 +93,12 @@ void DatabaseThread::check_devicelist()
             if(qry2.value(0).toUInt()==0)
                 mkList->sensors[nrow].LastCommtime = nowTime;
         }
-        sprintf(mkList->sensors[nrow].Device_Code,"%s",qry.value(0).toString().toUtf8().data());
-        sprintf(mkList->sensors[nrow].Device_Name,"%s",qry.value(1).toString().toUtf8().data());
-        sprintf(mkList->sensors[nrow].Device_Info,"%s",qry.value(2).toString().toUtf8().data());
-        sprintf(mkList->sensors[nrow].Device_Type,"%s",qry.value(5).toString().toUtf8().data());
-        sprintf(mkList->sensors[nrow].Company_Code,"%s",qry.value(4).toString().toUtf8().data());
+        mkList->sensors[nrow].id = qry.value(0).toInt();
+        sprintf(mkList->sensors[nrow].Device_Code,"%s",qry.value(1).toString().toUtf8().data());
+        sprintf(mkList->sensors[nrow].Device_Name,"%s",qry.value(2).toString().toUtf8().data());
+        sprintf(mkList->sensors[nrow].Device_Info,"%s",qry.value(3).toString().toUtf8().data());
+        sprintf(mkList->sensors[nrow].Device_Type,"%s",qry.value(6).toString().toUtf8().data());
+        sprintf(mkList->sensors[nrow].Company_Code,"%s",qry.value(5).toString().toUtf8().data());
         printf("Device_Code:%s\n",QString(mkList->sensors[nrow].Device_Code).toUtf8().data());
         printf("Device_Code:%s\n",QString(mkList->sensors[nrow].Company_Code).toUtf8().data());
         nrow++;

+ 1 - 0
DataProcessService/ytWarterMkProcess/main.cpp

@@ -32,6 +32,7 @@ bool shm_load(){
         return false;
     if((shmid=shmget(key,sizeof(MksensorList),IPC_CREAT|0666))==-1)
         return false;
+    printf("MK shmid %d\n",shmid);
     mkList = static_cast<MksensorList *>(shmat(shmid,nullptr,0));
     return true;
 }

+ 148 - 0
DataProcessService/ytWarterMkProcess/mkcore.cpp

@@ -5,6 +5,20 @@
 #include "../DataPrecessDog/dataprecess.h"
 #include "waterMk01.h"
 
+// 1. 提取硬编码魔法值为常量,便于统一修改和维护
+const QString MQTT_ID = "a71c40bb-5b02-4741-881b-24449f699db9";
+const QString ACTION_TYPE = "transpush";
+const QString PROVIDER = "Usky";
+const QString DEVICE_TYPE = "xiaofangshuiya";
+const QString DATA_TYPE = "deviceInfo";
+const QString SOFT_VERSION = "1.00.00";
+const QString HARD_VERSION = "0.1";
+const QString SENSOR_DESC = "";
+const QString SENSOR_UNIT = "MPa";
+const double LOW_THRESHOLD = 0.07;
+const double HIGH_THRESHOLD = 1.2;
+const QString API_URL = "http://47.98.201.73:55126";
+
 #define comm_debug
 #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
 
@@ -34,18 +48,24 @@ MKCore::MKCore(QObject *parent) :
         connect(repThread[i],&ttsThreads::ttslog,this,&MKCore::repLog);
         wssThread[i] = new ttsThreads(this,i,"47.98.201.73","/report",55125);
         connect(wssThread[i],&ttsThreads::ttslog,this,&MKCore::repLog);
+        lhThread[i] = new ttsThreads(this,i,"47.98.201.73","/report",55126);
+        connect(lhThread[i],&ttsThreads::ttslog,this,&MKCore::repLog);
         wxThreads[3][i]->start();
         wxThreads[2][i]->start();
         wxThreads[1][i]->start();
         wxThreads[0][i]->start();
         wssThread[i]->start();
         repThread[i]->start();
+        lhThread[i]->start();
     }
     wxcur = 0;
     repcur = 0;
+    lhcur = 0;
     DevIdx3 = -1;
     mkwaterserver = new Mkwaterserver(this);
     connect(mkwaterserver,&Mkwaterserver::getCommData,this,&MKCore::getCommData);
+    connect(mkwaterserver,&Mkwaterserver::getValue,this,&MKCore::getValue);
+    connect(mkwaterserver,&Mkwaterserver::getAlarm,this,&MKCore::getAlarm);
     dbThread->start();
     logThread->start();
     mqttinfoIdx = 1;
@@ -165,6 +185,134 @@ void MKCore::getValue(QString deviceidx, QString d1, int d2, int d3, double d4,
     dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=2").arg(d2).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
     dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=3").arg(d3).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
     dbThread->appendSql(QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=4").arg(d4).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(deviceidx),1);
+
+    QStringList strArray = {"SHYT25100007","SHYT25100006","SHYT25100009","SHYT25100004","SHYT25100005","SHYT25100008","SHYT25100001","SHYT25100002","SHYT25100003"};
+    if(strArray.contains(deviceidx)){
+        QJsonObject jqhsdata;
+        QJsonObject jqhsRTU;
+        jqhsRTU.insert("provider", "Usky");
+        jqhsRTU.insert("deviceType", "xiaofangshuiya");
+        jqhsRTU.insert("dataType", "deviceInfo");
+        jqhsRTU.insert("softVersion", "1.00.00");
+        jqhsRTU.insert("hardVersion", "0.1");
+        QJsonArray jajsonArray;
+        QJsonObject jaobjRTU;
+        for(int i=0;i<10240;i++){
+            if(QString::compare(QString(mkList->sensors[i].Device_Code),deviceidx)==0){
+                jaobjRTU.insert("sensorId", mkList->sensors[i].id);
+                break;
+            }
+        }
+
+        jaobjRTU.insert("desc", "");
+        jaobjRTU.insert("status", 0);
+        jaobjRTU.insert("pointValue", round(d4 * 10000) / 10000.0);
+        jaobjRTU.insert("unit", "MPa");
+        jaobjRTU.insert("lowThreshold", 0.07);
+        jaobjRTU.insert("highThreshold", 1.2);
+        jaobjRTU.insert("sendTime", QDateTime::currentDateTimeUtc().toSecsSinceEpoch());
+        jajsonArray.append(jaobjRTU);
+        jqhsRTU.insert("sensorList", jajsonArray);
+
+        QString rep = QString("{\"mqttId\":\"a71c40bb-5b02-4741-881b-24449f699db9\",\"action\":\"transpush\",\"data\": %1}").arg(QString(QJsonDocument(jqhsRTU).toJson()));
+        lhThread[lhcur]->appendData(rep);
+        printf("lh rep:%s\n",rep.toUtf8().data());
+        lhcur++;
+        lhcur &= 0x0f;
+
+
+
+
+//        QJsonObject mainJson;  // 优化命名:jqhsdata -> mainJson(见名知义)
+//        QJsonObject rtuJson;   // 优化命名:jqhsRTU -> rtuJson
+
+//        // 构建RTU基础信息(保留原始赋值逻辑)
+//        rtuJson.insert("provider", PROVIDER);
+//        rtuJson.insert("deviceType", DEVICE_TYPE);
+//        rtuJson.insert("dataType", DATA_TYPE);
+//        rtuJson.insert("softVersion", SOFT_VERSION);
+//        rtuJson.insert("hardVersion", HARD_VERSION);
+
+//        // 构建主JSON基础信息
+//        mainJson.insert("mqttId", MQTT_ID);
+//        mainJson.insert("action", ACTION_TYPE);
+
+//        QJsonArray sensorArray;  // 优化命名:jajsonArray -> sensorArray
+//        QJsonObject sensorJson;  // 优化命名:jaobjRTU -> sensorJson
+
+//        // 2. 修复数组越界风险:用传感器实际数量替代固定10240
+//        // 若 mkList->sensors 是 QList 类型:
+//        for(int i=0;i<10240;i++){
+//            if(QString::compare(QString(mkList->sensors[i].Device_Code),deviceidx)==0){
+//                sensorJson.insert("sensorId", mkList->sensors[i].id);
+//                break;
+//            }
+//        }
+
+//        // 填充传感器数据(保留原始逻辑)
+//        sensorJson.insert("desc", SENSOR_DESC);
+//        sensorJson.insert("status", 0);
+//        sensorJson.insert("pointValue", d4);
+//        sensorJson.insert("unit", SENSOR_UNIT);
+//        sensorJson.insert("lowThreshold", LOW_THRESHOLD);
+//        sensorJson.insert("highThreshold", HIGH_THRESHOLD);
+//        sensorJson.insert("sendTime", QDateTime::currentDateTimeUtc().toSecsSinceEpoch());
+
+//        // 组装传感器数组
+//        sensorArray.append(sensorJson);
+//        rtuJson.insert("sensorList", sensorArray);
+//        mainJson.insert("data", rtuJson);
+
+//        // 3. 修复JSON打印问题:通过QJsonDocument转换后输出
+//        QJsonDocument jsonDoc(mainJson);
+//        QString debugJsonStr = jsonDoc.toJson(QJsonDocument::Indented);  // 格式化输出,便于调试
+//        qDebug() << "待发送JSON数据:\n" << debugJsonStr;
+//        // 若坚持使用printf(需转换为C风格字符串)
+//        printf("jqhsdata  %s\n", debugJsonStr.toUtf8().constData());
+
+//        // 4. 修复JSON转QByteArray问题:正确转换为HTTP请求所需数据
+//        QByteArray requestData = debugJsonStr.toUtf8();  // 紧凑格式,减少传输体积
+
+//        // 5. 修复内存泄漏:使用栈上QNetworkRequest,无需动态分配
+//        QNetworkRequest request;
+//        QUrl apiUrl(API_URL);
+//        if (!apiUrl.isValid()) {  // 增加URL有效性检查,提升健壮性
+//            qCritical() << "接口URL无效:" << API_URL;
+//            return;
+//        }
+//        request.setUrl(apiUrl);
+//        request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=UTF-8");
+//        request.setRawHeader("User-Agent", "QtNetwork/5.15.2"); // 必填
+//        request.setRawHeader("Accept", "*/*");
+//        request.setRawHeader("Connection", "keep-alive");
+
+//        // 6. 发送POST请求,并处理响应和内存释放
+//        QNetworkReply *reply = netAccessManager->post(request, requestData);
+//        // 绑定finished信号,使用lambda表达式处理响应,自动释放reply内存
+//        QObject::connect(reply, &QNetworkReply::finished, [=]() {
+//            reply->deleteLater();  // 自动释放reply,避免内存泄漏
+
+//            // 处理请求结果
+//            if (reply->error() != QNetworkReply::NoError) {
+//                // 打印错误信息,便于问题排查
+//                qCritical() << "HTTP POST请求失败:" << reply->errorString() << "错误码:" << reply->error();
+//                return;
+//            }
+
+//            // 读取并打印成功响应
+//            QByteArray responseData = reply->readAll();
+//            qInfo() << "HTTP POST请求成功,响应数据:" << responseData;
+
+//            // 可选:解析响应JSON(增强功能性)
+//            QJsonParseError jsonError;
+//            QJsonDocument responseDoc = QJsonDocument::fromJson(responseData, &jsonError);
+//            if (jsonError.error != QJsonParseError::NoError) {
+//                qWarning() << "响应JSON解析失败:" << jsonError.errorString();
+//                return;
+//            }
+//            qDebug() << "解析后的响应JSON:\n" << responseDoc.toJson(QJsonDocument::Indented);
+//        });
+    }
 }
 
 void MKCore::getCoverValue(QString deviceidx, QString iotId, int repackage, int sensor_status, int manhole_cover_position_state, int lean_angle, double battery_voltage,int temperature,long etime,int serviceId)

+ 2 - 1
DataProcessService/ytWarterMkProcess/mkcore.h

@@ -71,13 +71,14 @@ private:
     QTcpServer *svr;
     LogThread *logThread;
     DatabaseThread *dbThread;
-    quint8 wxcur,repcur;
+    quint8 wxcur,repcur,lhcur;
     WechartThreads *wxThreads[4][16];
     QTimer *timer;
     int DevIdx3;
     QString DeviceID3;
     ttsThreads *wssThread[16];
     ttsThreads *repThread[16];
+    ttsThreads *lhThread[16];
     QMQTT::Client *m_client;
     quint16 mqttinfoIdx,mqttalarmIdx;
 };

+ 65 - 14
DataProcessService/ytWarterMkProcess/nbsensorthread.cpp

@@ -78,6 +78,38 @@ QByteArray MkSensorThread::mkRtn()
     return ret;
 }
 
+// 将16进制字符串转换为ASCII字符串
+QString hexToAscii(QString hexString)
+{
+    // 移除所有空格(处理类似"48 65 6C 6C 6F"这样的格式)
+    QString hex = hexString.remove(' ');
+
+    // 检查16进制字符串长度是否为偶数
+    if (hex.length() % 2 != 0) {
+        qWarning() << "Invalid hex string: length is odd";
+        return QString();
+    }
+
+    QByteArray byteArray;
+
+    // 每次处理两个字符(一个字节)
+    for (int i = 0; i < hex.length(); i += 2) {
+        QString hexPair = hex.mid(i, 2);
+        bool ok;
+        char byte = hexPair.toUInt(&ok, 16); // 将16进制字符串转换为字节
+
+        if (!ok) {
+            qWarning() << "Invalid hex character:" << hexPair;
+            return QString();
+        }
+
+        byteArray.append(byte);
+    }
+
+    // 将字节数组转换为ASCII字符串
+    return QString(byteArray);
+}
+
 void MkSensorThread::checkDevice(QString deviceid)
 {
     if((DevIdx3>=0)&&(DevIdx3<10240))
@@ -133,10 +165,12 @@ void MkSensorThread::check_framedata(QString data, QString etime, QString ip)
 //            QDateTime stime = QDateTime::fromTime_t(static_cast<uint>(((Dat[2]&0x000000ff)<<24)|((Dat[3]&0x000000ff)<<16)|((Dat[4]&0x000000ff)<<8)|(Dat[5]&0x000000ff)));
             quint16 bodyLen = static_cast<quint16>(((Dat[3]&0x00ff)<<8)|(Dat[4]&0x00ff));
             table.append( QString("bodyLen:%1,").arg(bodyLen));
-            QString device_code = "";
+            QString device_code1 = "";
             for(int i=5;i<17;i++){
-                device_code.append( QString("%1").arg(Dat[i]&0xff,2,16,QLatin1Char('0')));
+                device_code1.append( QString("%1").arg(Dat[i]&0xff,2,16,QLatin1Char('0')));
             }
+            QString device_code = hexToAscii(device_code1);
+            checkDevice(device_code);
             table.append( QString("device_code:%1,").arg(device_code));
 
             int batteryLevel = 0;
@@ -178,7 +212,7 @@ void MkSensorThread::check_framedata(QString data, QString etime, QString ip)
              int alarmUpper1=alarmUpper;
              table.append( QString("alarmUpper:%1,").arg(alarmUpper1*sb1[deviceType]));
              quint16 dataNow = static_cast<quint16>(((Dat[29]&0x00ff)<<8)|(Dat[30]&0x00ff));
-             int dataNow1=dataNow*sb1[deviceType];
+             double dataNow1=dataNow*sb1[deviceType];
              table.append( QString("dataNow:%1,").arg(dataNow1));
              QDateTime dataTime = QDateTime::fromTime_t(static_cast<uint>(((Dat[31]&0x000000ff)<<24)|((Dat[32]&0x000000ff)<<16)|((Dat[33]&0x000000ff)<<8)|(Dat[34]&0x000000ff)));
              table.append( QString("dataTime:%1,").arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")));
@@ -200,11 +234,11 @@ void MkSensorThread::check_framedata(QString data, QString etime, QString ip)
                  emit getCommData(QString("NBtable18=====:%1++++++++++++++++++%2")
                                                       .arg("table").arg(deviceType));
                  if(deviceType == 1){
-                     emit getValue(DevIdx3,"WP0",batteryLevel,signal,dataNow1,ip,dataTime);
+                     emit getValue(DeviceID3,"WP0",batteryLevel,signal,dataNow1,ip,dataTime);
                  }else if (deviceType == 8){
                      emit getCommData(QString("NBtable8=====:%1++++++++++++++++++%2")
                                                           .arg("table").arg(deviceType));
-                     emit getValue(DevIdx3,"LL0",batteryLevel,signal,dataNow1,ip,dataTime);
+                     emit getValue(DeviceID3,"LL0",batteryLevel,signal,dataNow1,ip,dataTime);
                  }
              }
              if ((Dat[24] & 0x01) == 0x01) {
@@ -212,18 +246,18 @@ void MkSensorThread::check_framedata(QString data, QString etime, QString ip)
                  alarm_state = "下限报警";
                  judge = true;
                  if(deviceType==1){
-                     emit getAlarm(DevIdx3,"WP1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低压"),dataTime);
+                     emit getAlarm(DeviceID3,"WP1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低压"),dataTime);
                  }else if (deviceType==8){
-                     emit getAlarm(DevIdx3,"LL1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低水位"),dataTime);
+                     emit getAlarm(DeviceID3,"LL1",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("低水位"),dataTime);
                  }
              } else if ((Dat[24] & 0x02) == 0x02) {
                  bjstr += "上限报警  ";
                  alarm_state = "上限报警";
                  judge = true;
                  if(deviceType==1){
-                     emit getAlarm(DevIdx3,"WP2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高压"),dataTime);
+                     emit getAlarm(DeviceID3,"WP2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高压"),dataTime);
                  }else if (deviceType==8){
-                     emit getAlarm(DevIdx3,"LL2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高水位"),dataTime);
+                     emit getAlarm(DeviceID3,"LL2",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("高水位"),dataTime);
                  }
              } else if ((Dat[24] & 0x03) == 0x00) {
                  alarm_state = "状态正常";
@@ -240,9 +274,9 @@ void MkSensorThread::check_framedata(QString data, QString etime, QString ip)
                  bjstr += "传感器异常";
                  sensor_state = "传感器异常";
                  if(deviceType==1){
-                     emit getAlarm(DevIdx3,"WP3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("故障"),dataTime);
+                     emit getAlarm(DeviceID3,"WP3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("故障"),dataTime);
                  }else if (deviceType==8){
-                     emit getAlarm(DevIdx3,"LL3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("故障"),dataTime);
+                     emit getAlarm(DeviceID3,"LL3",batteryLevel,signal,dataNow1,ip,QString::fromUtf8("故障"),dataTime);
                  }
              } else if ((Dat[24] & 0x08) == 0x00) {
                  sensor_state = "状态正常";
@@ -299,8 +333,8 @@ void MkSensorThread::check_serverdata(QString data, QString ip){
     emit getCommData(QString("[ %1 47.98.201.187 (wuji) ] %2")
                           .arg(ip)
                           .arg(DStr.replace('\n',"\\n").replace('\r',"\\r")));
-//    QString data1 = data.replace("\r","").replace("\n","").replace(" ","");
-//    check_framedata(data1,ip,ip);
+    QString data1 = data.replace("\r","").replace("\n","").replace(" ","");
+    check_framedata(data1,ip,ip);
 }
 
 static unsigned char auchCRCHi[] =
@@ -425,7 +459,7 @@ void MkSensorThread::readData(QTcpSocket *so)
 {
     QByteArray data = so->readAll();
     QDateTime t = QDateTime::currentDateTime();
-    quint16 bytesDataArray[] = { 0x48, 0x0A, 0x02, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x75};
+    quint16 bytesDataArray[] = { 0xa5, 0x5a, 0xff, 0x00, 0x1b, 0x4a, 0x53, 0x53, 0x48, 0x31, 0x39, 0x30, 0x35, 0x30, 0x30, 0x30, 0x35, 0x5d, 0x19, 0xbb, 0xde, 0x00, 0x00, 0xa3, 0x2b, 0x55, 0xaa};
 #ifdef comm_debug
     QString DStr = "";
     for(int i=0;i<data.length();i++){
@@ -476,6 +510,23 @@ void MkSensorThread::readData(QTcpSocket *so)
     bytesSend.append(bytesDataArray[7]);
     bytesSend.append(bytesDataArray[8]);
     bytesSend.append(bytesDataArray[9]);
+    bytesSend.append(bytesDataArray[10]);
+    bytesSend.append(bytesDataArray[11]);
+    bytesSend.append(bytesDataArray[12]);
+    bytesSend.append(bytesDataArray[13]);
+    bytesSend.append(bytesDataArray[14]);
+    bytesSend.append(bytesDataArray[15]);
+    bytesSend.append(bytesDataArray[16]);
+    bytesSend.append(bytesDataArray[17]);
+    bytesSend.append(bytesDataArray[18]);
+    bytesSend.append(bytesDataArray[19]);
+    bytesSend.append(bytesDataArray[20]);
+    bytesSend.append(bytesDataArray[21]);
+    bytesSend.append(bytesDataArray[22]);
+    bytesSend.append(bytesDataArray[23]);
+    bytesSend.append(bytesDataArray[24]);
+    bytesSend.append(bytesDataArray[25]);
+    bytesSend.append(bytesDataArray[26]);
 //    check_serverdata(data, so->peerAddress().toString());
     so->write(bytesSend);
 }

+ 2 - 2
DataProcessService/ytWarterMkProcess/nbsensorthread.h

@@ -32,8 +32,8 @@ public:
     quint8 hexstr_to_byte(QString dat);
 signals:
     void getOnLine(int deviceidx, bool flag, QDateTime t);
-    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getValue(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 
 public slots:

+ 2 - 2
DataProcessService/ytWarterMkProcess/nbwaterserver.cpp

@@ -34,12 +34,12 @@ void Mkwaterserver::egetCommData(QString data)
     emit getCommData(data);
 }
 
-void Mkwaterserver::egetValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
+void Mkwaterserver::egetValue(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t)
 {
     emit getValue(deviceidx,d1,d2,d3,d4,d5,t);
 }
 
-void Mkwaterserver::egetAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
+void Mkwaterserver::egetAlarm(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t)
 {
     emit getAlarm(deviceidx,d1,d2,d3,d4,d5,note,t);
 }

+ 4 - 4
DataProcessService/ytWarterMkProcess/nbwaterserver.h

@@ -14,14 +14,14 @@ public:
 
 signals:
     void getOnLine(int deviceidx, bool flag, QDateTime t);
-    void getValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void getAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void getValue(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void getAlarm(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void getCommData(QString data);
 public slots:
     void incomingConnection(qintptr socketDescriptor) override;
     void egetOnLine(int deviceidx, bool flag, QDateTime t);
-    void egetValue(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
-    void egetAlarm(int deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
+    void egetValue(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QDateTime t);
+    void egetAlarm(QString deviceidx, QString d1, int d2, int d3, double d4, QString d5, QString note, QDateTime t);
     void egetCommData(QString data);
 };
 

+ 1 - 1
DataProcessService/ytWaterProcess/databasethread.cpp

@@ -176,7 +176,7 @@ void DatabaseThread::run()
                     usleep(1000);
                 }
             }
-            emit SqlLog(QString("[ %1 sqlbeforbefor %2] ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(sqlList.length()));
+            //emit SqlLog(QString("[ %1 sqlbeforbefor %2] ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(sqlList.length()));
             if(sqlList.length()>0){
                 emit SqlLog(QString("[ %1 sqlbefor] ").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"))+sqlList.first());
                 db.exec(sqlList.first());

+ 13 - 7
DataProcessService/ytWaterProcess/sensorthread2.cpp

@@ -59,11 +59,17 @@ void SensorThread2::readData(QTcpSocket *so)
 {
     QByteArray data = so->readAll();
     QDateTime t = QDateTime::currentDateTime();
-#ifdef comm_debug
-        QString DStr = QString("[ %1 %2<<< ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
-                .arg("5018 ");
-        for(int i=0;i<data.length();i++)
-            DStr.append(QString(" %1").arg(data.at(i)&0xff,2,16,QChar('0')));
-        emit getCommData(DStr);
-#endif
+    QString DStr = QString("[ %1 %2<<< ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
+            .arg("5018 ");
+    for(int i=0;i<data.length();i++)
+        DStr.append(QString(" %1").arg(data.at(i)&0xff,2,16,QChar('0')));
+    printf("[5018]  %s\n",DStr.toUtf8().data());
+    emit getCommData(DStr);
+//#ifdef comm_debug
+//        QString DStr = QString("[ %1 %2<<< ]").arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
+//                .arg("5018 ");
+//        for(int i=0;i<data.length();i++)
+//            DStr.append(QString(" %1").arg(data.at(i)&0xff,2,16,QChar('0')));
+//        emit getCommData(DStr);
+//#endif
 }

+ 1 - 0
DataProcessService/ytWaterProcess/waterserver2.cpp

@@ -23,4 +23,5 @@ void waterserver2::incomingConnection(qintptr socketDescriptor)
     SensorThread2 *thread = new SensorThread2(socketDescriptor,this);
     connect(thread,&SensorThread2::finished,thread,&SensorThread2::quit);
     connect(thread,&SensorThread2::getCommData,this,&waterserver2::egetCommData);
+    thread->start();
 }