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()
@@ -273,6 +280,53 @@
}
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) {
   //转为json
   CappDlg* app = (CappDlg*)context;
@@ -317,7 +371,8 @@
         //CString msg(e.c_str());
         //AfxMessageBox(msg);
         throw e;
      }catch (...) {
      }
      catch (...) {
         throw string("未知错误");
      }
@@ -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("开始行业识别"));
   }
}