DllWrapper.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #pragma once
  2. #include "CommWrapperBase.h"
  3. #include "Utils.h"
  4. #include <windows.h>
  5. #include <string>
  6. #include <vector>
  7. #include <functional>
  8. #include <map>
  9. #include <mutex>
  10. // DLL函数指针类型定义
  11. typedef LONG(CALLBACK* TOnData)(int Sequence, double dTime, DWORD ComNumber, DWORD Irp, DWORD dwSize, char* lpData);
  12. typedef BOOL(CALLBACK* TInitMonitor)(LPCWSTR cKey, TOnData lpDataProc);
  13. typedef BOOL(CALLBACK* TMonitor)(DWORD dwNumber);
  14. typedef BOOL(CALLBACK* TStop)(DWORD dwNumber);
  15. typedef BOOL(CALLBACK* TSetWrite_Data)(DWORD dwNumber, char* lpBuffer, int Len);
  16. typedef BOOL(CALLBACK* TSetRead_Data)(DWORD dwNumber, char* lpBuffer, int Len);
  17. typedef void(CALLBACK* TFreeMonitor)(void);
  18. typedef int(CALLBACK* Tget_LastErrror)(void);
  19. // 使用基类定义的事件类型、数据结构和回调函数类型
  20. // enum class DllEventType -> CommEventType
  21. // struct DllEventData -> CommEventData
  22. // using DllEventCallback -> CommEventCallback
  23. class DllWrapper : public CommWrapperBase
  24. {
  25. private:
  26. HINSTANCE dll_handle_;
  27. TInitMonitor init_monitor_;
  28. TMonitor start_monitor_;
  29. TStop stop_monitor_;
  30. TSetWrite_Data set_write_data_;
  31. TSetRead_Data set_read_data_;
  32. TFreeMonitor free_monitor_;
  33. Tget_LastErrror get_last_error_;
  34. // DLL事件回调
  35. CommEventCallback dll_event_callback_;
  36. // DLL事件回调函数
  37. static LONG CALLBACK OnMonitorEx(int Sequence, double dTime, DWORD ComNumber, DWORD Irp, DWORD dwSize, char* lpData);
  38. public:
  39. DllWrapper();
  40. ~DllWrapper();
  41. // 初始化DLL
  42. bool Initialize() override;
  43. // 释放资源
  44. void Cleanup() override;
  45. // 初始化监控
  46. bool InitMonitor(const std::string& key = "C09976511B62F0ADB759D87E6906D865") override;
  47. // 监控端口
  48. bool MonitorPort(int port) override;
  49. // 停止监控端口
  50. bool StopPort(int port) override;
  51. // 读数据
  52. bool ReadData(int port, const std::string& hex_data) override;
  53. // 写数据
  54. bool WriteData(int port, const std::string& hex_data) override;
  55. // 释放监控
  56. bool FreeMonitor() override;
  57. // 获取最后错误
  58. int GetLastError() override;
  59. // 设置事件回调
  60. void SetEventCallback(CommEventCallback callback) override;
  61. // 获取错误信息
  62. std::string GetErrorMessage(int error_code) override;
  63. // 检查端口是否正在监控
  64. bool IsPortMonitored(int port) override;
  65. };