#include "assictscalet2000.h" #include #include "globalinfo.h" #include AssicTScaleT2000::AssicTScaleT2000() { } AssicTScaleT2000::~AssicTScaleT2000() { } bool AssicTScaleT2000::needSend() { return false; } QByteArray AssicTScaleT2000::sendData() { return QByteArray(); } void AssicTScaleT2000::handle(QByteArray &data) { int newstart = 0; int scan = m_inbuffer.size(); m_inbuffer.append(data); while (newstart < m_inbuffer.size()) { int start = newstart; int end = m_inbuffer.indexOf('\n', scan); if (end < 0) { m_inbuffer.remove(0, start); return; } newstart = end + 1; scan = newstart; if (end == start) continue; if (m_inbuffer.at(end - 1) == '\r') { --end; if (end == start) continue; } QByteArray line(m_inbuffer.constData() + start, end - start); readData(line); } m_inbuffer.clear(); } void AssicTScaleT2000::readData(QByteArray & data) { QList list = data.split(','); auto buff = list.last(); // QDInfo << data ; // Token is a sequence of numbers. QByteArray dt; for (int i = 0; i < buff.size(); ++i){ auto ch = buff.at(i); if (ch == '.' || ch == '-' || (ch >= '0' && ch <= '9')) dt.append(ch); } if (!dt.isEmpty()) { double token = dt.toDouble(); scaledata _scaledata; _scaledata.gross_widget = token; GlobalInfo::this_()->SetScaleData(_scaledata); } }