MACHINE_DPC.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #pragma once
  2. //#include "GeneratorDriver.h"
  3. #include "LogicDriver.h"
  4. #define TIMEOUTVALUE 500
  5. #define TIMEOUTVALUE_NOMAL 100
  6. #define VALUELENGTH_NORMAL 50
  7. #define VALUELENGTH_MAX 100
  8. class CMACHINE_DPC : public LogicDriver
  9. {
  10. std::string *m_pWorkpath;
  11. public:
  12. CMACHINE_DPC();
  13. virtual ~CMACHINE_DPC();
  14. ///////////////////////////////////////////////////////
  15. virtual bool DriverEntry(ResDataObject &Configuration);
  16. virtual bool Driver_Probe(ResDataObject &HardwareInfo);
  17. virtual bool SYSTEM_CALL SetDriverWorkPath(const char * PARAM_IN pWorkPath);
  18. virtual PVOID SYSTEM_CALL LoadDriver();//无根节点
  19. virtual void SYSTEM_CALL UnloadDriver();
  20. RET_STATUS SYSTEM_CALL GetDriverDictionary(ResDataObject& PARAM_OUT DriverInfo);
  21. RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource);
  22. //virtual bool OnNotify(HANDLE ExitNotify);
  23. virtual DWORD SYSTEM_CALL OnNotify(HANDLE evtList[], DWORD count);
  24. virtual bool Connect();
  25. virtual void DisConnect();
  26. //给硬件驱动设置Unique工作路径
  27. //如果是同一设备同一连接情况下,硬件多次接入,系统会保证工作路径是一样的.
  28. //连接后,单一硬件相关的数据要保存在此.
  29. virtual bool SYSTEM_CALL SetDeviceWorkPath(const char * PARAM_IN pWorkPath);
  30. //逻辑设备树的加载和卸载
  31. virtual PVOID SYSTEM_CALL LoadLogicDevices();
  32. virtual void SYSTEM_CALL UnloadLogicDevices();
  33. virtual bool SYSTEM_CALL OnHeartBeat();
  34. virtual bool Device_Probe(ResDataObject &HardwareInfo);
  35. bool SetupStitching(int nImageCount, int nDirection, int nInitialHeight, int nStitchLength, int nStepLength, int nSID, int nStitchType);
  36. /////////////////////////////////
  37. static PACKET_RET PackageProcess(const char * RecData, DWORD nLength, DWORD& PacketLength);
  38. int SendCommandWithoutAck(char* strCommand, int nTimeOut = TIMEOUTVALUE);
  39. size_t OnCallback(const char * strPackage, size_t nLength);
  40. public:
  41. int m_nImageCount{ 0 }; // total number of stitching images
  42. int m_nCurrentImage{ 0 }; //Current stitching procedure image
  43. bool m_bStitchingInProgress{ false };
  44. private:
  45. string m_strWorkPath;
  46. ResDataObject m_DeviceConfig; //设备属性
  47. HMODULE m_hDPCDll;
  48. bool m_bStatusFlag{false};
  49. HMODULE m_SCFDllFileHandle;
  50. SCF* m_pSCFServer;
  51. typedef SCF* (*GetSCF)();
  52. GetSCF m_fpGetSCF;
  53. typedef void(*ReleaseSCF)(SCF *p);
  54. ReleaseSCF m_fpReleaseSCF;
  55. SCFPacket *m_pSendPacket;
  56. SCFPacket *m_pReceivePacket;
  57. string m_strCurrentCommand{ "" };
  58. CRITICAL_SECTION m_stCSProcessMsg;
  59. class CMACHINE_Logical * m_pGenLogical;
  60. ResDataObject m_DetectorToTableDistance;
  61. ResDataObject m_DistanceSourcetoDetector;
  62. ResDataObject m_DistanceSourcetoEntrance;
  63. ResDataObject m_ProjectionNum;
  64. ResDataObject m_ProjectionMaxAngle;
  65. ResDataObject m_ProjectionDirection;
  66. ResDataObject m_MechAngle;
  67. ResDataObject m_MechHeight;
  68. };