Browse Source

change carmakerexework.

yuchuli 2 years ago
parent
commit
85d695c9df
1 changed files with 52 additions and 1 deletions
  1. 52 1
      src/test/carmakerexecwork/carmakerexecwork.cpp

+ 52 - 1
src/test/carmakerexecwork/carmakerexecwork.cpp

@@ -6,10 +6,61 @@
 //}
 
 
+#include <QFile>
+#include <QProcess>
+
+#include <QFileInfo>
+
+#include <iostream>
+
 
 int ExecCarmakerWork(int64_t workid,std::string strInputName, std::string strOutputName, std::string strcmd,
                      std::shared_ptr<char> pinput_ptr,int ninputsize,
                      std::shared_ptr<char> & poutput_ptr,int & noutputsize)
 {
-    return 0;
+    QFile xFile;
+    xFile.setFileName(strInputName.data());
+    if(xFile.open(QIODevice::ReadWrite))
+    {
+        xFile.write(pinput_ptr.get(),ninputsize);
+        xFile.close();
+    }
+    else
+    {
+        std::cout<<" Fail write input data. File Name: "<<strInputName<<std::endl;
+        return -1;
+    }
+
+    (void)workid;
+
+    QProcess * pProc = new QProcess();
+
+    std::cout<<" cmd "<<strcmd<<std::endl;
+    pProc->start(strcmd.data());
+    pProc->waitForFinished();
+
+    QFileInfo fileinfo(strOutputName.data());
+    if(!fileinfo.isFile())
+    {
+        std::cout<<" exec fail."<<std::endl;
+        return -1;
+    }
+
+    QFile xFileout;
+    xFileout.setFileName(strOutputName.data());
+    if(xFileout.open(QIODevice::ReadOnly))
+    {
+        QByteArray ba = xFileout.readAll();
+        noutputsize = ba.size();
+        std::cout<<" file size: "<<noutputsize<<std::endl;
+        poutput_ptr =  std::shared_ptr<char>(new char[static_cast<unsigned long>(noutputsize) ]);
+        memcpy(poutput_ptr.get(),ba.data(),noutputsize);
+    }
+    else
+    {
+        std::cout<<" can't open output file."<<std::endl;
+        return -1;
+    }
+
+    return 1;
 }