logserialport.cpp 2.0 KB

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