logserialport.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "logserialport.h"
  2. #include <QCoreApplication>
  3. #include <QByteArray>
  4. #include "handle/utils/utilsfunc.h"
  5. #ifdef _MSC_VER
  6. #pragma execution_character_set("utf-8")
  7. #endif
  8. LogSerialPort::LogSerialPort()
  9. {
  10. buchang = 0;
  11. min = 0;
  12. max = 999;
  13. ret = QByteArray::fromHex("010300000006C5C8");
  14. }
  15. LogSerialPort::~LogSerialPort()
  16. {
  17. }
  18. float LogSerialPort::toFloat(const QByteArray & ray){
  19. char ch[4] = {0};
  20. ch[0] = ray.at(2);
  21. ch[1] = ray.at(3);
  22. ch[2] = ray.at(0);
  23. ch[3] = ray.at(1);
  24. float value = UtilsFun::toFloatRTUValue(&ch[0]);
  25. return value;
  26. }
  27. bool LogSerialPort::needSend()
  28. {
  29. return true;
  30. }
  31. QByteArray LogSerialPort::sendData()
  32. {
  33. return ret;
  34. }
  35. void LogSerialPort::handle(QByteArray & data)
  36. {
  37. doHandle(data);
  38. }
  39. void LogSerialPort::doHandle(const QByteArray & data)
  40. {
  41. if(data.at(1) != 0x03) return;
  42. int l = data.length() - 2;
  43. QByteArray td = data.right(2);
  44. int crcc = static_cast<uchar>(td.at(1));
  45. crcc = crcc << 8;
  46. crcc = crcc | static_cast<uchar>(td.at(0));
  47. int scrc = UtilsFun::CRC(data, l);
  48. if(scrc != crcc) {
  49. // QLogWarning << " RTC CRC erro : should be : " << scrc << " rev is : " << crcc << "\n"
  50. // << "data is : " << data.toHex();
  51. qDebug()<< " RTC CRC erro : should be : " << scrc << " rev is : " << crcc << "\n"
  52. << "data is : " << data.toHex();
  53. return;
  54. }
  55. QByteArray dt;
  56. dt = data.mid(5,4);
  57. // qDebug()<<dt;
  58. // qDebug()<<data;
  59. // qDebug()<<data.mid(1,4);
  60. if(dt.isEmpty()) return;
  61. needReply = true;
  62. float v = toFloat(dt);
  63. double rv = v + buchang;
  64. if(rv > max){
  65. // qDebug() << " get error value : " << rv << " mx : " << max << " min:" << min
  66. // << " buchang : " << buchang;
  67. rv = max;
  68. // return;
  69. }
  70. if(rv < min){
  71. // qDebug() << " get error value : " << rv << " mx : " << max << " min:" << min
  72. // << " buchang : " << buchang;
  73. rv = min;
  74. }
  75. auto tm = QDateTime::currentDateTime();
  76. // save(0,tm,rv);
  77. // emit newValue(0,tm.toMSecsSinceEpoch(),rv);
  78. // qDebug()<<rv;
  79. _scaledata.gross_widget = rv;
  80. GlobalInfo::this_()->SetScaleData(_scaledata);
  81. }