Deviceinfo.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #include "Deviceinfo.h"
  2. #include <QSettings>
  3. #include <QString>
  4. #include <QFile>
  5. #include <QDir>
  6. #include <QDebug>
  7. #include <QTextCodec>
  8. #include <QJsonDocument>
  9. #include <QJsonArray>
  10. #include <QJsonObject>
  11. #define CONFIG_PATH "D:/Profile"
  12. #define CONFIG_FULL_PATH "D:/Profile/deviceinfo.ini"
  13. #define CONFIG_NAME "deviceinfo.ini"
  14. DeviceInfo::DeviceInfo()
  15. {
  16. genDefault();
  17. load();
  18. }
  19. bool DeviceInfo::update_testinfo(const QString& jsonStr )
  20. {
  21. QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonStr.toUtf8());
  22. QJsonObject jsonObj = jsonDoc.object();
  23. if(jsonObj.contains("target") && jsonObj.value("target").isDouble()){
  24. m_testinfo.m_target = jsonObj.value("target").toDouble();
  25. }
  26. if(jsonObj.contains("interval") && jsonObj.value("interval").isDouble()){
  27. m_testinfo.m_interval = jsonObj.value("interval").toInt();
  28. }
  29. if(jsonObj.contains("threshold") && jsonObj.value("threshold").isDouble()){
  30. m_testinfo.m_threshold = jsonObj.value("threshold").toDouble();
  31. }
  32. if(jsonObj.contains("begin") && jsonObj.value("begin").isDouble()){
  33. m_testinfo.m_begin = jsonObj.value("begin").toDouble();
  34. qDebug() << "m_testinfo.m_begin = " << m_testinfo.m_begin;
  35. }
  36. if(jsonObj.contains("end") && jsonObj.value("end").isDouble()){
  37. m_testinfo.m_end = jsonObj.value("end").toDouble();
  38. }
  39. if(jsonObj.contains("delta") && jsonObj.value("delta").isDouble()){
  40. m_testinfo.m_delta = jsonObj.value("delta").toDouble();
  41. }
  42. if(jsonObj.contains("passed") && jsonObj.value("passed").isDouble()){
  43. m_testinfo.m_passed = jsonObj.value("passed").toInt();
  44. }
  45. return true;
  46. }
  47. void DeviceInfo::genDefault()
  48. {
  49. QTextCodec *codec = QTextCodec::codecForName("UTF-8");
  50. m_model = "JL-VRST-2000";
  51. m_id = "JL0000000";
  52. m_name = codec->toUnicode("汽车罐车油气回收系统智能检测仪");
  53. m_ex_level = "Exd IIBT4 Gb";
  54. m_manufacture = codec->toUnicode("杭州嘉隆物联网科技有限公司");
  55. m_date = "2000-00-00";
  56. m_testinfo.m_target = 6.0;
  57. m_testinfo.m_interval = 300;
  58. m_testinfo.m_threshold = 0.5;
  59. m_testinfo.m_begin = 0.0;
  60. m_testinfo.m_end = 0.0;
  61. m_testinfo.m_delta = 0.0;
  62. m_testinfo.m_passed = 1;
  63. }
  64. void DeviceInfo::load()
  65. {
  66. QFileInfo fi(CONFIG_FULL_PATH);
  67. if(fi.isFile()){
  68. QSettings *configIniRead = new QSettings(CONFIG_FULL_PATH, QSettings::IniFormat);
  69. configIniRead->setIniCodec("UTF-8");
  70. m_name = configIniRead->value("Device/Name").toString();
  71. m_model = configIniRead->value("Device/Model").toString();
  72. m_id = configIniRead->value("Device/ID").toString();
  73. m_ex_level = configIniRead->value("Device/ExFlag").toString();
  74. m_date = configIniRead->value("Device/Date").toString();
  75. m_manufacture = configIniRead->value("Device/Manufacture").toString();
  76. m_testinfo.m_target = configIniRead->value("SelfTest/Target").toDouble();
  77. m_testinfo.m_interval = configIniRead->value("SelfTest/Interval").toInt();
  78. m_testinfo.m_threshold = configIniRead->value("SelfTest/Threshold").toDouble();
  79. if(m_testinfo.m_target > 50.0){
  80. m_testinfo.m_target = 50.0;
  81. }else if(m_testinfo.m_target < -20.0){
  82. m_testinfo.m_target = -20.0;
  83. }
  84. if(m_testinfo.m_interval > 10*60){
  85. m_testinfo.m_interval = 10*60;
  86. }else if(m_testinfo.m_interval < 10){
  87. m_testinfo.m_interval = 10;
  88. }
  89. //if(m_testinfo.m_threshold > m_testinfo.m_target){
  90. // m_testinfo.m_threshold = m_testinfo.m_target;
  91. //}
  92. qDebug() << "manufacture:" << m_manufacture;
  93. delete configIniRead;
  94. }else{
  95. qDebug() << "CONFIG is not exists";
  96. QDir dir(CONFIG_PATH);
  97. if(false == dir.exists()){
  98. qDebug() << "CONFIG_PATH is not exists, will mk it";
  99. dir.mkdir(CONFIG_PATH);
  100. }
  101. QSettings *configIniWrite = new QSettings(CONFIG_FULL_PATH, QSettings::IniFormat);
  102. configIniWrite->setIniCodec("UTF-8");
  103. configIniWrite->setValue("Device/Name", m_name);
  104. configIniWrite->setValue("Device/Model", m_model);
  105. configIniWrite->setValue("Device/ID", m_id);
  106. configIniWrite->setValue("Device/ExFlag", m_ex_level);
  107. configIniWrite->setValue("Device/Date", m_date);
  108. configIniWrite->setValue("Device/Manufacture", m_manufacture);
  109. configIniWrite->setValue("SelfTest/Target", m_testinfo.m_target);
  110. configIniWrite->setValue("SelfTest/Interval", m_testinfo.m_interval);
  111. configIniWrite->setValue("SelfTest/Threshold", m_testinfo.m_threshold);
  112. delete configIniWrite;
  113. }
  114. }