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. // QDInfo << data ;
  50. // Token is a sequence of numbers.
  51. QByteArray dt;
  52. for (int i = 0; i < buff.size(); ++i){
  53. auto ch = buff.at(i);
  54. if (ch == '.' || ch == '-' || (ch >= '0' && ch <= '9'))
  55. dt.append(ch);
  56. }
  57. if (!dt.isEmpty()) {
  58. double token = dt.toDouble();
  59. scaledata _scaledata;
  60. _scaledata.gross_widget = token;
  61. GlobalInfo::this_()->SetScaleData(_scaledata);
  62. }
  63. }