#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(); const char * from = buff.constData(); const char *to = from + buff.size(); const char *inner; QDInfo << data ; // Token is a sequence of numbers. for (inner = from; inner != to; ++inner) if (*inner != '.' && (*inner < '0' || *inner > '9')) break; if (from != inner) { double token = QByteArray(from, inner - from).toDouble(); scaledata _scaledata; _scaledata.gross_widget = token; GlobalInfo::this_()->SetScaleData(_scaledata); } }