admin
2022-07-22 9adb473067a993b4e0eacf3675baf14b29da3eca
app/appDlg.cpp
@@ -15,6 +15,7 @@
#include "tool.h"
#include "JsonUtil.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
@@ -74,6 +75,8 @@
   capture = new  L2DataCapture();
   recognitionManager = new RecognitionManager();
   limitUpCapture = new LimitUpCapture();
   buySuccessCapture = new BuySuccessCapture();
   industryCapture = new IndustryCapture();
}
void CappDlg::DoDataExchange(CDataExchange* pDX)
@@ -81,6 +84,8 @@
   CDialogEx::DoDataExchange(pDX);
   DDX_Control(pDX, IDC_CHECK2, limitUpUpload);
   DDX_Control(pDX, IDC_BUTTON12, limitUpBtn);
   DDX_Control(pDX, IDC_BUTTON_TRADE, tradeBtn);
   DDX_Control(pDX, IDC_INDUSTRY, industryBtn);
}
BEGIN_MESSAGE_MAP(CappDlg, CDialogEx)
@@ -96,6 +101,8 @@
   ON_BN_CLICKED(IDC_BUTTON7, &CappDlg::OnBnClickedButton7)
   ON_BN_CLICKED(IDC_BUTTON8, &CappDlg::OnBnClickedButton8)
   ON_BN_CLICKED(IDC_BUTTON12, &CappDlg::OnBnClickedButton12)
   ON_BN_CLICKED(IDC_BUTTON_TRADE, &CappDlg::OnBnClickedButtonTrade)
   ON_BN_CLICKED(IDC_INDUSTRY, &CappDlg::OnBnClickedIndustry)
END_MESSAGE_MAP()
@@ -220,11 +227,11 @@
         app->socketManager->sendMsg(index, data.c_str());
      }
      catch (string st) {
          //重新连接服务器
         //重新连接服务器
         app->socketManager->resetClient(index);
         app->socketManager->Connect(index);
      }
      cout<<"*****数据处理时间:"<<(clock()- time_start)<<endl;
      cout << "*****数据处理时间:" << (clock() - time_start) << endl;
   }
}
@@ -261,7 +268,7 @@
      string data = JsonUtil::loadLimitUpData(dataList);
      clock_t time_start = clock();
      try {
         app->socketManager->sendMsg(8,data.c_str());
         app->socketManager->sendMsg(8, data.c_str());
      }
      catch (string st) {
         //重新连接服务器
@@ -271,6 +278,53 @@
      cout << "####涨停数据处理时间:" << (clock() - time_start) << endl;
   }
}
void  CappDlg::OnTradeSuccessDataCallback(list<TradeSuccessData>  dataList, void* context) {
   //转为json
   CappDlg* app = (CappDlg*)context;
   //cout << "回调:" << std::this_thread::get_id() << ":" << index << endl;
   CButton* btn = (CButton*)app->GetDlgItem(IDC_CHECK3);
   bool check = btn->GetCheck();
   if (check) {
      string data = JsonUtil::loadTradeSuccessData(dataList);
      clock_t time_start = clock();
      try {
         app->socketManager->sendMsg(8, data.c_str());
      }
      catch (string st) {
         //重新连接服务器
         app->socketManager->resetClient(8);
         app->socketManager->Connect(8);
      }
      cout << "####交易成功数据处理时间:" << (clock() - time_start) << endl;
   }
}
void  CappDlg::OnIndustryDataCallback(list<IndustryData>  dataList, void* context) {
   //转为json
   CappDlg* app = (CappDlg*)context;
   //cout << "回调:" << std::this_thread::get_id() << ":" << index << endl;
   CButton* btn = (CButton*)app->GetDlgItem(IDC_CHECK3);
   list<list<IndustryData>> _list;
   _list.push_back(dataList);
   string data = JsonUtil::loadIndustryData(_list);
   try {
      app->socketManager->sendMsg(8, data.c_str());
      //AfxMessageBox(_T("上传成功"));
   }
   catch (string st) {
      //重新连接服务器
      app->socketManager->resetClient(8);
      app->socketManager->Connect(8);
   }
   dataList.clear();
   _list.clear();
}
bool  CappDlg::OnActionCallback(string data, void* context) {
@@ -317,7 +371,8 @@
         //CString msg(e.c_str());
         //AfxMessageBox(msg);
         throw e;
      }catch (...) {
      }
      catch (...) {
         throw string("未知错误");
      }
@@ -379,7 +434,7 @@
         }
      }
      catch (string st) {
      }
   }
@@ -421,7 +476,7 @@
   if (!capture->isInited())
   {
      try {
         capture->init(OnL2DataCallback,OnTradeQueueDataCallback, this);
         capture->init(OnL2DataCallback, OnTradeQueueDataCallback, this);
      }
      catch (string st) {
         CString msg(st.c_str());
@@ -430,8 +485,8 @@
   }
   clock_t time = clock();
   CString path= GUITool::selectImage();
   std:string p = cstring2String(path);
   CString path = GUITool::selectImage();
std:string p = cstring2String(path);
   if (p.length() <= 0) {
      return;
   }
@@ -460,7 +515,7 @@
   clock_t time = clock();
   CString path = GUITool::selectImage();
   std:string p = cstring2String(path);
std:string p = cstring2String(path);
   if (p.length() <= 0) {
      return;
   }
@@ -519,9 +574,9 @@
         map<int, string> result = THSActionUtil::getListenL2GPCodes(recognitionManager);
         //设置代码
         for (map<int, string>::iterator ele = result.begin();ele != result.end();ele++) {
            int key= (*ele).first;
            int key = (*ele).first;
            string value = (*ele).second;
            capture->setGPCode(key,value);
            capture->setGPCode(key, value);
         }
      }
@@ -561,13 +616,13 @@
         return;
      }
   }
   list<CString> paths= GUITool::selectMulImages();
   list<CString> paths = GUITool::selectMulImages();
   std::list<string> fResultList;
   for (list<CString>::iterator ele = paths.begin();ele != paths.end();ele++) {
      CString path = *ele;
      std:string p = cstring2String(path);
      std::list<string> resultList =   THSActionUtil::recognitionGPCode(cv::imread(p), recognitionManager);
   std:string p = cstring2String(path);
      std::list<string> resultList = THSActionUtil::recognitionGPCode(cv::imread(p), recognitionManager);
      for (std::list<string>::iterator ele1 = resultList.begin();ele1 != resultList.end();ele1++) {
         bool contains = false;
         for (std::list<string>::iterator e = fResultList.begin();e != fResultList.end();e++) {
@@ -635,7 +690,7 @@
      try
      {
         limitUpCapture->init(OnLimitUpDataCallback, this);
      }
      catch (string st)
      {
@@ -653,7 +708,8 @@
      try
      {
         limitUpCapture->refreshHWND();
      }catch (string st)
      }
      catch (string st)
      {
         CString msg(st.c_str());
         AfxMessageBox(msg);
@@ -670,3 +726,82 @@
}
//当日成交监控
void CappDlg::OnBnClickedButtonTrade()
{
   if (!buySuccessCapture->isInited()) {
      try
      {
         buySuccessCapture->init(OnTradeSuccessDataCallback, this);
      }
      catch (string st)
      {
         CString msg(st.c_str());
         AfxMessageBox(msg);
         return;
      }
   }
   if (
      buySuccessCapture->isRunning()) {
      buySuccessCapture->stop();
      tradeBtn.SetWindowTextW(_T("启动成交识别任务"));
   }
   else {
      try
      {
         buySuccessCapture->refreshHWND();
      }
      catch (string st)
      {
         CString msg(st.c_str());
         AfxMessageBox(msg);
         return;
      }
      buySuccessCapture->start();
      tradeBtn.SetWindowTextW(_T("暂停成交识别任务"));
   }
}
void* CappDlg::runCaptureIndustryCodes(void* context) {
   CappDlg* app = (CappDlg*)context;
   app->industryCapture->captureIndustryCodes();
   return context;
}
//行业代码识别
void CappDlg::OnBnClickedIndustry()
{
   if (!industryCapture->isInited()) {
      industryCapture->init(OnIndustryDataCallback, this);
   }
   try {
      industryCapture->refreshHWND();
   }
   catch (string st) {
      CString msg(st.c_str());
      AfxMessageBox(msg);
      return;
   }
   if (!industryPid.p) {
      int ret = 0;
      ret = pthread_create(&industryPid, NULL, &(CappDlg::runCaptureIndustryCodes), this);
      if (ret != 0) {
         AfxMessageBox(_T("创建运行线程失败"));
         return;
      }
      pthread_detach(industryPid);
      industryBtn.SetWindowTextW(_T("结束行业识别"));
   }
   else {
      industryCapture->stop();
      int ret = pthread_cancel(industryPid);
      industryPid.p = 0;
      industryBtn.SetWindowTextW(_T("开始行业识别"));
   }
}