CompareItemThread.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef _COMPAREITEMTHREAD_H_
  2. #define _COMPAREITEMTHREAD_H_
  3. #include "BaseCalculateThread.h"
  4. #include "CompareResult.h"
  5. #include "AlarmInfo.h"
  6. class CalculateDBPhaseThread;
  7. class NoiseDetectThread;
  8. class CompareDoubleThread;
  9. /**
  10. * 对比项信息
  11. * 功能:
  12. * 1、对比两个录音通道的数据,通道1是主通道,和其他通道挨个对比
  13. * 2、这里处理各个通道的报警信息,写入数据库
  14. * 3、从这里开启各个比对线程,获取比对结果信息,并组合
  15. *
  16. */
  17. class CompareItemThread : public BaseCalculateThread
  18. {
  19. public:
  20. CompareItemThread(CalculateThreadInfo_t& threadInfo);
  21. ~CompareItemThread() override;
  22. protected:
  23. /* 线程功能函数 */
  24. void task() override;
  25. /* 初始化数据 */
  26. bool initData() override;
  27. /* 清理数据 */
  28. void clearData() override;
  29. private:
  30. /* 分派线程,创建两两对比线程 */
  31. bool dispatchCompareThreads();
  32. /* 更新数据 */
  33. bool updateResultData();
  34. /* 发送数据 */
  35. void sendResultData();
  36. /* 处理报警数据 */
  37. void processAlarmData();
  38. private:
  39. /* 计算音量信息的线程指针,第一个是主通道线程 */
  40. std::vector<CalculateDBPhaseThread*> m_vecCalculateDBPhaseThreads;
  41. std::vector<bool> m_vecCDBPhaseUpdated; /* 音量包更新标志位 */
  42. /* 计算噪音的线程指针 */
  43. std::vector<NoiseDetectThread*> m_vecNoiseDetectThreads;
  44. /* 对比项信息线程,这个线程在这里创建,不会和其他对比项复用 */
  45. std::vector<CompareDoubleThread*> m_vecCompareDoubleThreads;
  46. /* 计算的数据结果 */
  47. CompareResult_t m_compareResult;
  48. /* 存储报警信息 */
  49. std::vector<AlarmInfo_t> m_vecAlarmSilence; /* 静音报警信息 */
  50. std::vector<AlarmInfo_t> m_vecAlarmOverload; /* 过载报警信息 */
  51. std::vector<AlarmInfo_t> m_vecAlarmPhase; /* 反相报警信息 */
  52. std::vector<AlarmInfo_t> m_vecAlarmSilenceLast; /* 上一次静音报警信息 */
  53. std::vector<AlarmInfo_t> m_vecAlarmOverloadLast; /* 上一次过载报警信息 */
  54. std::vector<AlarmInfo_t> m_vecAlarmPhaseLast; /* 上一次反相报警信息 */
  55. /* 要写入到数据库的报警信息 */
  56. std::list<AlarmInfo_t> m_listAlarm;;
  57. };
  58. #endif // _COMPAREITEMTHREAD_H_