| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #include "assictscalet2000.h"
- #include <QList>
- #include "globalinfo.h"
- 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<QByteArray> list = data.split(',');
- auto buff = list.last();
- const char * from = buff.constData();
- const char *to = from + buff.size();
- const char *inner;
- // 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);
- }
- }
|