caizm 2 лет назад
Родитель
Сommit
76998af4e3

+ 22 - 3
CAE_Solution/src/Rabbitmq/rabbitClient/rabbitclient.cpp

@@ -5,6 +5,9 @@
 #include <QFile>
 #include <QMessageBox>
 #include <QBuffer>
+#include <QJsonParseError>
+#include <QDebug>
+#include <QJsonDocument>
 
 
 rabbitClient::rabbitClient(QObject *parent) : QObject(parent)
@@ -103,10 +106,26 @@ int rabbitClient::recvMsg()
             }
         }
         disconnect_index = 0;
-        cout<<str<<endl;
+        cout<<"str="<<str<<endl;
         printf("------------recvClient recvMsg-------------------\n");
-        if(str!="")
-            emit sendmsg_recvclientToRecvstate(QString::fromStdString(str));//信号
+        if(str!=""){
+
+//            QJsonParseError jsonError;
+//            QByteArray array=QByteArray::fromStdString(str);
+//            qDebug()<<"array ="<<array;
+//            std::string str_ = array.toStdString();
+//            cout<<"str_ = "<<str_<<endl;
+//            QByteArray array2(str.c_str(),str.length());
+//            qDebug()<<"array2 = "<<array2;
+//            QByteArray array3;
+//            for(int i=0;i<str.length();i++){
+//                array3.append(str[i]);
+//            }
+//            qDebug()<<"array3 = "<<array3;
+//            QJsonDocument doucment = QJsonDocument::fromJson(array3, &jsonError);  // 转化为 JSON 文档
+//            qDebug()<<"error!"<<jsonError.errorString();
+            emit sendmsg_recvclientToRecvstate(str);//信号
+        }
         QThread::sleep(1);
     }
     return 0;

+ 1 - 1
CAE_Solution/src/Rabbitmq/rabbitClient/rabbitclient.h

@@ -40,7 +40,7 @@ public slots:
 signals:
     void restart_recv_client_signal();
     void restart_send_client_signal();
-    void sendmsg_recvclientToRecvstate(QString str);
+    void sendmsg_recvclientToRecvstate(std::string str);
 
 
 private:

+ 17 - 3
CAE_Solution/src/VTK/QVTKRenderer/qvtkrenderer.cpp

@@ -19,8 +19,22 @@ QVTKRenderer::QVTKRenderer()
  */
 QVTKRenderer::~QVTKRenderer()
 {
-    this->renderer->Delete();
-    this->renderWin->Delete();
+    if(this->renderer){
+        this->renderer->Delete();
+        this->renderer = NULL;
+    }
+    if(this->renderWin){
+        this->renderWin->Delete();
+        this->renderWin = NULL;
+    }
+    if(this->camera_){
+        this->camera_->Delete();
+        this->camera_ = NULL;
+    }
+    if(this->qvtkWidget){
+        delete this->qvtkWidget;
+        this->qvtkWidget = NULL;
+    }
 }
 
 /*
@@ -54,7 +68,7 @@ void QVTKRenderer::init()
 void QVTKRenderer::CaptureWindowImages()
 {
     if(qvtkWidget == NULL) return;
-    QPixmap pix = QPixmap::grabWidget(qvtkWidget);
+    QPixmap pix = qvtkWidget->grab();
     QByteArray bytes;
     QBuffer buffer(&bytes);
     buffer.open(QIODevice::WriteOnly);

+ 3 - 3
CAE_Solution/src/main.cpp

@@ -51,11 +51,11 @@ int main(int argc, char *argv[])
     thread_recvsate->start();
     sendstate->moveToThread(thread_sendstate);
     thread_sendstate->start();
-    handle->moveToThread(thread_handlePool);
-    thread_handlePool->start();
+    //handle->moveToThread(thread_handlePool);
+    //thread_handlePool->start();
 
     QObject::connect(handle,SIGNAL(sendImg_handlePoolToSendstate(std::string)),sendstate,SLOT(getImg_handlePoolToSendstate(std::string)));
-    QObject::connect(recvstate,SIGNAL(sendmsg_recvstateTohandlePool(QString)),handle,SLOT(getmsg_recvstateTohandlePool(QString)));
+    QObject::connect(recvstate,SIGNAL(sendmsg_recvstateTohandlePool(std::string)),handle,SLOT(getmsg_recvstateTohandlePool(std::string)));
     QObject::connect(handle,SIGNAL(sendWidget_handlePoolToWidget(QWidget*)),&w,SLOT(getWidget_handlePoolToWidget(QWidget*)));
 
     return a.exec();

+ 24 - 22
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.cpp

@@ -39,23 +39,25 @@ handlePool::~handlePool()
  * @ret:void
  * @birth: creadted by czm in 20230406
  */
-void handlePool::getmsg_recvstateTohandlePool(QString recvmsg)
+void handlePool::getmsg_recvstateTohandlePool(std::string recvmsg)
 {
-    this->jsonObject->FromJSON(recvmsg.toStdString());
-    int numOfUID = judgeMsgUID(this->jsonObject);
-    if(numOfUID == -1){
-        render = new QVTKRenderer();
-        vector_render.append(render);
-        vector_json.append(this->jsonObject);
-    }else{
-        this->render = vector_render[numOfUID];
-    }
+    vtkJsonObject* json_object = new vtkJsonObject();
+    json_object->FromJSON(recvmsg);
+    int numOfUID = judgeMsgUID(json_object);
+//    QVTKRenderer* render_;
+//    if(numOfUID == -1){
+//        render_ = new QVTKRenderer();
+//        vector_render.append(render_);
+//        vector_json.append(json_object);
+//    }else{
+//        render_ = vector_render[numOfUID];
+//    }
 
-    operateRender(this->jsonObject->action);
+//    operateRender(json_object->action,render_);
 
-    std::string img_ = this->render->img.toStdString();
-    std::string json_ = this->jsonObject->ToJson(img_);
-    emit sendImg_handlePoolToSendstate(json_);//信号
+//    std::string img_ = render_->img.toStdString();
+//    std::string json_ = json_object->ToJson(img_);
+//    emit sendImg_handlePoolToSendstate(json_);//信号
 }
 
 /*
@@ -75,18 +77,18 @@ int handlePool::judgeMsgUID(vtkJsonObject *obj)
 
 /*
  * @brief: Operate render according to commands(根据命令操作render)
- * @param: this->jsonObject->action
+ * @param: jsonObject->action render
  * @ret:void
  * @birth: creadted by czm in 20230406
  */
-void handlePool::operateRender(QString action)
+void handlePool::operateRender(QString action,QVTKRenderer* render_)
 {
-    if(action == "init"){
-        this->render->init();
-        emit sendWidget_handlePoolToWidget(this->render->GetWidget());
-    }else{
+    //if(action == "init"){
+        render_->init();
+        emit sendWidget_handlePoolToWidget(render_->GetWidget());
+    //}else{
         cout<<"action:"<<action.toStdString()<<endl;
-    }
-    this->render->CaptureWindowImages();
+    //}
+    render_->CaptureWindowImages();
 }
 

+ 2 - 2
CAE_Solution/src/threadPool_and_statemachine/dealWith/handlepool.h

@@ -16,7 +16,7 @@ public:
     ~handlePool();
 
     int judgeMsgUID(vtkJsonObject*);
-    void operateRender(QString);
+    void operateRender(QString,QVTKRenderer*);
 
 
 public:
@@ -30,7 +30,7 @@ signals:
     void sendImg_handlePoolToSendstate(std::string);
     void sendWidget_handlePoolToWidget(QWidget*);
 public slots:
-    void getmsg_recvstateTohandlePool(QString);
+    void getmsg_recvstateTohandlePool(std::string);
 };
 
 #endif // HANDLEPOOL_H

+ 6 - 0
CAE_Solution/src/threadPool_and_statemachine/dealWith/vtkjsonobject.cpp

@@ -33,6 +33,7 @@ void vtkJsonObject::FromJSON(std::string msg)
     QByteArray byteArray(msg.c_str(),msg.length());
     QJsonParseError jsonError;
     QJsonDocument doucment = QJsonDocument::fromJson(byteArray, &jsonError);  // 转化为 JSON 文档
+    if(jsonError.error!=QJsonParseError::NoError)qDebug()<<"error!"<<jsonError.errorString();
     if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) {  // 解析未发生错误
         if (doucment.isObject()) {  // JSON 文档为对象
             QJsonObject object = doucment.object();  // 转化为对象
@@ -40,30 +41,35 @@ void vtkJsonObject::FromJSON(std::string msg)
                 QJsonValue value = object.value("usrId");
                 if (value.isString()) {
                     this->usrId = value.toString();
+                    qDebug()<<"usrId:"<<this->usrId;
                 }
             }
             if (object.contains("solverConfigid")) {
                 QJsonValue value = object.value("solverConfigid");
                 if (value.isString()) {
                     this->solverConfigid = value.toString();;
+                    qDebug()<<"solverConfigid:"<<this->solverConfigid;
                 }
             }
             if (object.contains("proId")) {
                 QJsonValue value = object.value("proId");
                 if (value.isString()) {
                     this->proId = value.toString();
+                    qDebug()<<"proid:"<<this->proId;
                 }
             }
             if (object.contains("paramJson")) {
                 QJsonValue value = object.value("paramJson");
                 if (value.isString()) {
                    this->paramJson = value.toString();
+                    qDebug()<<"paramJson:"<<this->paramJson;
                 }
             }
             if (object.contains("action")) {
                 QJsonValue value = object.value("action");
                 if (value.isString()) {
                    this->action = value.toString();
+                    qDebug()<<"action:"<<this->action;
                 }
             }
 

+ 3 - 3
CAE_Solution/src/threadPool_and_statemachine/stateMachine/statemachine.cpp

@@ -52,7 +52,7 @@ void stateMachine::init(QString tmp){
         printf("------------recvThread started-------------------\n");
         recvThread = new QThread();
         recvClient = new rabbitClient("recvClient");
-        connect(recvClient,SIGNAL(sendmsg_recvclientToRecvstate(QString)),this,SLOT(getmsg_recvclientToRecvstate(QString)));
+        connect(recvClient,SIGNAL(sendmsg_recvclientToRecvstate(std::string)),this,SLOT(getmsg_recvclientToRecvstate(std::string)));
         connect(recvClient,SIGNAL(restart_recv_client_signal()),this,SLOT(restart_recv_client_slot()));
         recvClient->moveToThread(recvThread);
         connect(recvThread,&QThread::finished,[=](){
@@ -89,11 +89,11 @@ void stateMachine::init(QString tmp){
  * @ret: void
  * @birth: created by czm in 20230326
  */
-void stateMachine::getmsg_recvclientToRecvstate(QString Recvmsg)
+void stateMachine::getmsg_recvclientToRecvstate(std::string Recvmsg)
 {
     mutex.lock();
     printf("---------------state Machine slot recv(QString)-----------------------\n");
-    recvMsgQueue.push_back(Recvmsg);
+    recvMsgQueue.push_back(QString::fromStdString(Recvmsg));
     emit sendmsg_recvstateTohandlePool(Recvmsg);//信号
     recvMsgQueue.clear();
     mutex.unlock();

+ 2 - 2
CAE_Solution/src/threadPool_and_statemachine/stateMachine/statemachine.h

@@ -25,10 +25,10 @@ public:
 
 signals:
     void sendImg_sendstateToSendclient(std::string);
-    void sendmsg_recvstateTohandlePool(QString);
+    void sendmsg_recvstateTohandlePool(std::string);
 
 public slots:
-    void getmsg_recvclientToRecvstate(QString);
+    void getmsg_recvclientToRecvstate(std::string);
     void getImg_handlePoolToSendstate(std::string);
     void restart_recv_client_slot();
     void restart_send_client_slot();

+ 4 - 1
CAE_Solution/tests/tests.pro

@@ -4,6 +4,9 @@ SUBDIRS += \
     gmsh_test \
     QVTKRender_test \
     QThread_test \
-    boost_test
+    boost_test \
+    boost_function_test \
+    captureFigure_test \
+    jsonToQt_Test