| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "logserialport.h"
- #include <QCoreApplication>
- #include <QByteArray>
- #include "handle/utils/utilsfunc.h"
- #ifdef _MSC_VER
- #pragma execution_character_set("utf-8")
- #endif
- LogSerialPort::LogSerialPort()
- {
- buchang = 0;
- min = 0;
- max = 999;
- ret = QByteArray::fromHex("010300000006C5C8");
- }
- LogSerialPort::~LogSerialPort()
- {
- }
- 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;
- }
- bool LogSerialPort::needSend()
- {
- return true;
- }
- QByteArray LogSerialPort::sendData()
- {
- return ret;
- }
- void LogSerialPort::handle(QByteArray & data)
- {
- doHandle(data);
- }
- 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);
- }
|