assictscalet2000.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include "assictscalet2000.h"
  2. #include <QList>
  3. #include "globalinfo.h"
  4. #include <QLog/qlog.h>
  5. AssicTScaleT2000::AssicTScaleT2000()
  6. {
  7. }
  8. AssicTScaleT2000::~AssicTScaleT2000()
  9. {
  10. }
  11. bool AssicTScaleT2000::needSend()
  12. {
  13. return false;
  14. }
  15. QByteArray AssicTScaleT2000::sendData()
  16. {
  17. return QByteArray();
  18. }
  19. void AssicTScaleT2000::handle(QByteArray &data)
  20. {
  21. int newstart = 0;
  22. int scan = m_inbuffer.size();
  23. m_inbuffer.append(data);
  24. while (newstart < m_inbuffer.size()) {
  25. int start = newstart;
  26. int end = m_inbuffer.indexOf('\n', scan);
  27. if (end < 0) {
  28. m_inbuffer.remove(0, start);
  29. return;
  30. }
  31. newstart = end + 1;
  32. scan = newstart;
  33. if (end == start)
  34. continue;
  35. if (m_inbuffer.at(end - 1) == '\r') {
  36. --end;
  37. if (end == start)
  38. continue;
  39. }
  40. QByteArray line(m_inbuffer.constData() + start, end - start);
  41. readData(line);
  42. }
  43. m_inbuffer.clear();
  44. }
  45. void AssicTScaleT2000::readData(QByteArray & data)
  46. {
  47. QList<QByteArray> list = data.split(',');
  48. auto buff = list.last();
  49. const char * from = buff.constData();
  50. const char *to = from + buff.size();
  51. const char *inner;
  52. QDInfo << data ;
  53. // Token is a sequence of numbers.
  54. for (inner = from; inner != to; ++inner)
  55. if (*inner != '.' && (*inner < '0' || *inner > '9'))
  56. break;
  57. if (from != inner) {
  58. double token = QByteArray(from, inner - from).toDouble();
  59. scaledata _scaledata;
  60. _scaledata.gross_widget = token;
  61. GlobalInfo::this_()->SetScaleData(_scaledata);
  62. }
  63. }