rtuhelper.h 955 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef RTUHELPER_H
  2. #define RTUHELPER_H
  3. #include <QByteArray>
  4. #include "QDebug"
  5. #ifdef _MSC_VER
  6. #pragma execution_character_set("utf-8")
  7. #endif
  8. /***
  9. * 通讯处理的公共函数
  10. */
  11. namespace UtilsFun {
  12. class RTUHelper
  13. {
  14. public:
  15. RTUHelper();
  16. virtual ~RTUHelper();
  17. enum RType
  18. {
  19. SubAddress,//从站地址
  20. GetType, //要数类型
  21. NumLength, //需要的长度
  22. ReadData, //需要读取数据
  23. CRCUL, //CRC 低位
  24. CRCUH // CRC 高位
  25. };
  26. inline void setCheckSubAddress(bool check){
  27. _checkSubAddress = check;
  28. }
  29. inline void addCheckSubAddress(char ch){
  30. _subAddress.append(ch);
  31. }
  32. void readed(const QByteArray & data);
  33. protected:
  34. virtual void doHandle(const QByteArray & data) = 0;
  35. private:
  36. QByteArray buffer;
  37. RType readType;
  38. int toReadlen;
  39. private:
  40. bool _checkSubAddress;
  41. QByteArray _subAddress;
  42. };
  43. }
  44. #endif // RTUHELPER_H