CRS485.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #pragma once
  2. #pragma warning(disable:4275)
  3. #include<iostream>
  4. #include<stdlib.h>
  5. #include<stdio.h>
  6. #include "windows.h"
  7. #include "CRS232.h"
  8. #include <sstream>
  9. #include <string>
  10. using namespace std;
  11. #ifdef MODBUS_EXPORTS
  12. #define MODBUS_DLL_API __declspec(dllexport)
  13. #else
  14. #define MODBUS_DLL_API //__declspec(dllimport)
  15. #endif
  16. #define MODBUS_BASE_ERROR (SERIAL_PORT_BASE_ERROR + 20000)
  17. #define MAX_COM_BUFFER_LEN 256
  18. typedef enum
  19. {
  20. MODBUS_BASE_FILE = MODBUS_BASE_ERROR,
  21. RTU_ERR_ORDER,
  22. RTU_ERR_ADDR,
  23. RTU_ERR_DATA,
  24. RTU_ERR_CONN,
  25. RTU_ERR_WRITE,
  26. RTU_ERR_READ_NULL,
  27. RTU_ERR_RECV,
  28. RTU_ERR_PARITY,
  29. } MODBUSERR;
  30. class MODBUS_DLL_API CRS485 : public CRS232
  31. {
  32. public:
  33. char aryComPort[10];
  34. private:
  35. unsigned char m_Readbuf[MAX_COM_BUFFER_LEN];
  36. unsigned char m_Writebuf[MAX_COM_BUFFER_LEN];
  37. unsigned short CalcCrcFast(unsigned char*puchMsg, unsigned short usDataLen);
  38. long ModbusRead(unsigned char rtuAddr, unsigned char cmd, unsigned short int dataAddr, unsigned short int readCount, unsigned short int *pReadVal);
  39. public:
  40. long OpenPort(unsigned long xPort, int iRate);
  41. long OpenPort(char *xPort, int iRate);
  42. long ModbusRead_01(unsigned char rtuAddr, unsigned short int dataAddr, unsigned short int readCount, unsigned short int *pReadVal);
  43. long ModbusRead_03(unsigned char rtuAddr, unsigned short int dataAddr, unsigned short int readCount, unsigned short int *pReadVal);
  44. long ModbusRead_04(unsigned char rtuAddr, unsigned short int dataAddr, unsigned short int readCount, unsigned short int *pReadVal);
  45. long ModbusWrite_05(unsigned char rtuAddr, unsigned short int dataAddr, unsigned short int &pWriteVal);
  46. long ModbusWrite_06(unsigned char rtuAddr, unsigned short int dataAddr, unsigned short int pWriteVal);
  47. long ModbusWrite_10(unsigned char rtuAddr, unsigned short int dataAddr, unsigned short int writeCount, unsigned short int *pWriteVal);
  48. static string GetErrText(long errid);
  49. };