Head.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #if !defined(_INCLUDE_HEAD_H)
  2. #define _INCLUDE_HEAD_H
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. #include <afxtempl.h>
  7. // Modbus Ascii 设备Dll错误代码定义
  8. enum __ERRO_CODE_MODBUS_ASC
  9. {
  10. ERR_CODE_MODBUS_ASC_COM_FAULT = 20001 , // Modbus asc设备串口通信故障
  11. ERR_CODE_MODBUS_ASC_COM_BUSY , // Modbus asc设备串口通信忙
  12. ERR_CODE_MODBUS_ASC_COM_READ_NO_DATA , // Modbus asc设备没有读到数据
  13. ERR_CODE_MODBUS_ASC_COM_READ_LEN_OVER , // Modbus asc设备读到数据长度超时限制
  14. ERR_CODE_MODBUS_ASC_COM_LRC_LOST , // Modbus asc设备lrc校验失败
  15. EER_CODE_MODBUS_ASC_COM_WRITE_DATA , // Modbus asc设备写串口错误
  16. EER_CODE_MODBUS_ASC_COM_REGNUM , // Modbus asc设备寄存器数
  17. ERR_CODE_MODBUS_ASC_COM_VARLEN , // Modbus asc设备变量长度非法
  18. };
  19. #pragma pack(push) //保存对齐状态
  20. #pragma pack(1)//设定为4字节对齐
  21. typedef struct tagPORTPARAM
  22. {
  23. BYTE PortNo; //Com端口
  24. DWORD BaudRate; //波特率
  25. BYTE ByteSize; /* Number of bits/byte, 4-8 */
  26. BYTE Parity; /* 校验位 0-4=None,Odd,Even,Mark,Space */
  27. BYTE StopBits; /* 结束位 0,1,2 = 1, 1.5, 2 */
  28. BYTE StartAddr; //起止地址
  29. int Interval; //间隔时间
  30. tagPORTPARAM()
  31. {
  32. PortNo=3;
  33. BaudRate=CBR_9600;
  34. ByteSize=8;
  35. Parity=NOPARITY;
  36. StopBits=ONESTOPBIT;
  37. StartAddr=1;
  38. Interval=1000;
  39. }
  40. }PORTPARAM,*PPORTPARAM;
  41. //写寄存器请求
  42. typedef struct __REQUESTPARAM
  43. {
  44. BYTE Start; //起始位
  45. BYTE AddrCode[2]; //地址码
  46. BYTE FuncCode[2]; //功能码
  47. BYTE StartAddr[4]; //起始地址
  48. BYTE RequestRegNum[4]; //读取的寄存器个数
  49. BYTE Lrc[2]; //校验码位
  50. BYTE End[2]; //结束符
  51. }REQUESTPARAM, *pREQUESTPARAM;
  52. typedef struct __REQUESTWRPARAM
  53. {
  54. BYTE Start; //起始位
  55. BYTE AddrCode[2]; //地址码
  56. BYTE FuncCode[2]; //功能码
  57. BYTE StartAddr[4]; //起始地址
  58. BYTE RequestRegNum[4]; //读取的寄存器个数
  59. BYTE Data[8]; //设置的数据
  60. BYTE Lrc[2]; //校验码位
  61. BYTE End[2]; //结束符
  62. }REQUESTWRPARAM, *pREQUESTWRPARAM;
  63. //设置的通讯协议基本参数
  64. typedef struct __SETBASEPARAM
  65. {
  66. int nAddr;//地址码
  67. int nStartAddr;//起始地址
  68. int nRegNum;//读取的寄存器个数
  69. BYTE FuncCode;//功能码
  70. }SETBASEPARAM, *pSETBASEPARAM;
  71. //读应答数据结构
  72. typedef struct __STATUS_STRUCT
  73. {
  74. BYTE Start; //起始位(都是:号开头)
  75. BYTE AddrCode[2]; //地址码
  76. BYTE FuncCode[2]; //功能码
  77. BYTE RtnByteNum[2]; //返回字节个数
  78. }STATUS_STRUCT, *PSTATUSSTRUCT;
  79. typedef struct __RESPONSE_STRUCT
  80. {
  81. STATUS_STRUCT StatusStruct;
  82. char StrRtnMsg[80]; //返回字符串
  83. BYTE Lrc[2]; //校验码位
  84. BYTE End[2]; //结束码 0x0d、0x0a(回车、换行符)
  85. }RESPONSE_STRUCT, *PRESPONSE_STRUCT;
  86. #pragma pack(pop)//恢复对齐状态
  87. #endif //!defined(_INCLUDE_HEAD_H)