| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #include "logserialport.h"
- #include <QCoreApplication>
- #include <QByteArray>
- #include "utils/utilsfunc.h"
- #ifdef _MSC_VER
- #pragma execution_character_set("utf-8")
- #endif
- LogSerialPort::LogSerialPort(QObject *parent) : QObject(parent)
- {
- buchang = 0;
- min = 0;
- max = 999;
- }
- float LogSerialPort::toFloat(const QByteArray & ray){
- char ch[4] = {0};
- ch[0] = ray.at(2);
- ch[1] = ray.at(3);
- ch[2] = ray.at(0);
- ch[3] = ray.at(1);
- float value = UtilsFun::toFloatRTUValue(&ch[0]);
- return value;
- }
- void LogSerialPort::doHandle(const QByteArray & data)
- {
- if(data.at(1) != 0x03) return;
- int l = data.length() - 2;
- QByteArray td = data.right(2);
- int crcc = static_cast<uchar>(td.at(1));
- crcc = crcc << 8;
- crcc = crcc | static_cast<uchar>(td.at(0));
- int scrc = UtilsFun::CRC(data, l);
- if(scrc != crcc) {
- // QLogWarning << " RTC CRC erro : should be : " << scrc << " rev is : " << crcc << "\n"
- // << "data is : " << data.toHex();
- qDebug()<< " RTC CRC erro : should be : " << scrc << " rev is : " << crcc << "\n"
- << "data is : " << data.toHex();
- return;
- }
- QByteArray dt;
- dt = data.mid(5,4);
- // qDebug()<<dt;
- // qDebug()<<data;
- // qDebug()<<data.mid(1,4);
- if(dt.isEmpty()) return;
- needReply = true;
- float v = toFloat(dt);
- double rv = v + buchang;
- if(rv > max){
- // qDebug() << " get error value : " << rv << " mx : " << max << " min:" << min
- // << " buchang : " << buchang;
- rv = max;
- // return;
- }
- if(rv < min){
- // qDebug() << " get error value : " << rv << " mx : " << max << " min:" << min
- // << " buchang : " << buchang;
- rv = min;
- }
- auto tm = QDateTime::currentDateTime();
- // save(0,tm,rv);
- // emit newValue(0,tm.toMSecsSinceEpoch(),rv);
- // qDebug()<<rv;
- scaledata.gross_widget = rv;
- GlobalInfo::this_()->SetScaleData(scaledata);
- }
|