SerialSCF.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // 下列 ifdef 块是创建使从 DLL 导出更简单的
  2. // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SERIALSCF_EXPORTS
  3. // 符号编译的。在使用此 DLL 的
  4. // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
  5. // SERIALSCF_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
  6. // 符号视为是被导出的。
  7. #ifndef SERIALSCF_EXPORTS
  8. #ifdef _WIN64
  9. #ifdef _DEBUG
  10. #pragma comment(lib, "SerialSCFX64D.lib")
  11. #else
  12. #pragma comment(lib, "SerialSCFX64.lib")
  13. #endif
  14. #else
  15. #ifdef _DEBUG
  16. #pragma comment(lib, "SerialSCFD.lib")
  17. #else
  18. #pragma comment(lib, "SerialSCF.lib")
  19. #endif
  20. #endif
  21. #endif
  22. #ifdef SERIALSCF_EXPORTS
  23. #define SERIALSCF_API __declspec(dllexport)
  24. #define SERIALSCF_C_API extern "C" __declspec(dllexport)
  25. #else
  26. #define SERIALSCF_API __declspec(dllimport)
  27. #define SERIALSCF_C_API extern "C" __declspec(dllimport)
  28. #endif
  29. #include "SCF.h"
  30. #include "ResDataObject.h"
  31. SERIALSCF_C_API SCF* GetSCF();
  32. SERIALSCF_C_API void ReleseSCF(SCF* p);
  33. // 此类是从 SerialSCF.dll 导出的
  34. class SERIALSCF_API SerialSCF : public SCF{
  35. HANDLE hCom;
  36. string *m_pPortName;
  37. DWORD m_BaudRate;
  38. DWORD m_ByteSize;
  39. DWORD m_Parity;
  40. DWORD m_StopBits;
  41. DWORD m_ReadTimeout;
  42. DWORD m_WriteTimeout;
  43. int ConnectCOM(const char *pCom, DWORD BaudRate, DWORD ByteSize, DWORD Parity, DWORD StopBits);
  44. public:
  45. SerialSCF(void);
  46. virtual ~SerialSCF();
  47. //设置连接,参数也由json传过来
  48. /*
  49. {
  50. "connect":"COM",
  51. "port":"COM1",
  52. "baudrate":"3200",
  53. "bytesize":"8",
  54. "parity":"1",
  55. "stopbits":"1",
  56. }
  57. */
  58. int Connect(ResDataObject & Connectprameters, PacketParser callback = NULL, SCF_TRANSFERTYPE TransferType = SCF_NORMAL_TRANSFER, DWORD CommunicateTimeout = 0);
  59. //断开连接
  60. void Disconnect();
  61. //判断是否连接
  62. bool isConnected();
  63. const char* GetConnectionType();
  64. //将数据包通过SCF进行发送
  65. int SendPacket(const char *pPacket, DWORD length, DWORD timeout);
  66. int SendPacket(SCFPacket *pPacket, DWORD timeout);
  67. protected:
  68. //继承类的读包流程,直接从SCF接口中读取数据,通常由SCF的读取线程调用,当上层直接调用的时候需要锁住读取线程,再调用该函数
  69. int ReadData(char *pPacket, DWORD length, DWORD timeout);
  70. //int ReadData(SCFPacket *pPacket, DWORD timeout);
  71. };