Browse Source

v1.1

master
zhaohe 2 years ago
parent
commit
4ba13c581d
  1. 3
      README.md
  2. 2
      iflytoplinuxsdk
  3. 2
      src/main_control_service.cpp
  4. 8
      src/service/chinese_gb2312.cpp
  5. 19
      src/service/chinese_gb2312.hpp
  6. 52
      src/service/device_io_control_service.cpp
  7. 46
      src/service/disinfection_ctl_service.cpp
  8. 43
      src/service/disinfection_ctl_service.hpp
  9. 2
      src/version.hpp

3
README.md

@ -18,4 +18,7 @@ v1.0
1. 预热时间数值从配置文件获取 1. 预热时间数值从配置文件获取
2. 支持打印机 2. 支持打印机
3. 修改加热片等大功率设备,安全继电器打开延迟50ms->500ms 3. 修改加热片等大功率设备,安全继电器打开延迟50ms->500ms
V1.1
1. 添加消毒结果打印
``` ```

2
iflytoplinuxsdk

@ -1 +1 @@
Subproject commit f4e805b65fa639e80318356abf965d92418dcf48
Subproject commit 3da00c61b924de3e5236f5a450e535c8d32f1ea4

2
src/main_control_service.cpp

@ -76,7 +76,7 @@ void MainControlService::initialize() {
GET_TO_SERVICE(m_deviceIoControlService); GET_TO_SERVICE(m_deviceIoControlService);
m_deviceIoControlService->startScan(); m_deviceIoControlService->startScan();
m_deviceIoControlService->printerTest();
// m_deviceIoControlService->printerTest();
BUILD_AND_REG_SERRVICE(DataExportService); BUILD_AND_REG_SERRVICE(DataExportService);
GET_SERVICE(DataExportService)->initialize(); GET_SERVICE(DataExportService)->initialize();

8
src/service/chinese_gb2312.cpp

@ -1,8 +0,0 @@
#include "chinese_gb2312.hpp"
using namespace iflytop;
using namespace std;
string ChineseGb2312::nihaozhongguo() {
return "你好中国";
}

19
src/service/chinese_gb2312.hpp

@ -1,19 +0,0 @@
#pragma once
#include <fstream>
#include <functional>
#include <iostream>
#include <list>
#include <map>
#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
namespace iflytop {
using namespace std;
class ChineseGb2312 {
public:
string nihaozhongguo();
};
} // namespace iflytop

52
src/service/device_io_control_service.cpp

@ -5,22 +5,11 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "chinese_gb2312.hpp"
#include "iflytop/components/uart_printer/uart_printer.hpp" #include "iflytop/components/uart_printer/uart_printer.hpp"
#include "iflytoplinuxsdk/src/iflytop/components/ziconv.hpp"
using namespace iflytop; using namespace iflytop;
using namespace std; using namespace std;
#if 0
ID ID
- 3 PC2 0
- 3 PC3 1
- 3 PC4 2
- 3 PC5 3
- 3 PC6 4
- 3 PC7 5
#endif
#define GPM_TO_SPEED(gpm) (gpm * 10) #define GPM_TO_SPEED(gpm) (gpm * 10)
#define SPEED_TO_GPM(speed) (speed / 10) #define SPEED_TO_GPM(speed) (speed / 10)
@ -249,7 +238,7 @@ static int filter(int data) {
if (q.size() > 50) { if (q.size() > 50) {
q.pop_front(); q.pop_front();
} }
// 中值滤波
// 锟斤拷值锟剿诧拷
int datacache[51]; int datacache[51];
int ndata = 0; int ndata = 0;
for (auto& var : q) { for (auto& var : q) {
@ -275,7 +264,7 @@ int DeviceIoControlService::getDisinfectantVolume_g() {
float kpa = m_pressure_sensor_data[1].value / 1000.0; float kpa = m_pressure_sensor_data[1].value / 1000.0;
int g = 2.11 * kpa * 1000 * 1.3; int g = 2.11 * kpa * 1000 * 1.3;
if (g < 450) { /*零点*/
if (g < 450) { /*锟斤拷锟�*/
return 0; return 0;
} else { } else {
g -= 450; g -= 450;
@ -304,10 +293,10 @@ int DeviceIoControlService::getWaterImmersionSensor2() {
DeviceIoControlService::h2o2sensor_data_t DeviceIoControlService::getH2O2SenSorData1() { DeviceIoControlService::h2o2sensor_data_t DeviceIoControlService::getH2O2SenSorData1() {
lock_guard<recursive_mutex> lock(lock_); lock_guard<recursive_mutex> lock(lock_);
DeviceIoControlService::h2o2sensor_data_t data; DeviceIoControlService::h2o2sensor_data_t data;
// int16_t hydrogen_peroxide_volume; // ppm 0x0100 过氧化氢浓度
// int16_t h2o_h2o2_rs; // %RS * 100 0x0101 过氧化氢相对饱和度
// int16_t temperature1; // °C * 100 0x0102 温度
// int16_t relative_humidity; // %RH * 100 0x0103 相对湿度
// int16_t hydrogen_peroxide_volume; // ppm 0x0100 锟斤拷锟斤拷锟斤拷锟斤拷浓锟斤拷
// int16_t h2o_h2o2_rs; // %RS * 100 0x0101 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷员锟斤拷投锟�
// int16_t temperature1; // 锟斤拷C * 100 0x0102 锟铰讹拷
// int16_t relative_humidity; // %RH * 100 0x0103 锟斤拷锟绞�拷锟�
data.h2o2 = m_hpp272_data_1.hydrogen_peroxide_volume; data.h2o2 = m_hpp272_data_1.hydrogen_peroxide_volume;
data.humid = m_hpp272_data_1.relative_humidity / 100; data.humid = m_hpp272_data_1.relative_humidity / 100;
data.temp = m_hpp272_data_1.temperature1 / 100; data.temp = m_hpp272_data_1.temperature1 / 100;
@ -315,7 +304,7 @@ DeviceIoControlService::h2o2sensor_data_t DeviceIoControlService::getH2O2SenSorD
/** /**
* @brief * @brief
* TODO:
* TODO:
* *
*/ */
if (data.h2o2 < 0) { if (data.h2o2 < 0) {
@ -342,7 +331,7 @@ bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2se
data.h2o2sensor_status[2] = false; data.h2o2sensor_status[2] = false;
/** /**
* @brief
* @brief
*/ */
data.min_h2o2 = -1; data.min_h2o2 = -1;
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) { for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) {
@ -367,7 +356,7 @@ bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2se
} }
/** /**
* @brief
* @brief
*/ */
data.max_saturation = -1; data.max_saturation = -1;
for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) { for (size_t i = 0; i < ZARRAYSIZE(data.h2o2sensor_data); i++) {
@ -381,7 +370,7 @@ bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2se
} }
/** /**
* @brief 湿
* @brief
*/ */
data.max_humid = -1; data.max_humid = -1;
@ -398,14 +387,13 @@ bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2se
} }
void DeviceIoControlService::printerTest() { void DeviceIoControlService::printerTest() {
printerPrintf("* * * * * * * * * * * * * * * \n");
printerPrintf("123456789123456789\n");
printerPrintf("abcdefghijk lmnopqr\n");
printerPrintf("ABCDEF GHIJ KLMN OPQR\n");
printerPrintf(fmt::format("{}\n", ChineseGb2312().nihaozhongguo()));
printerPrintf(fmt::format("{}\n", ChineseGb2312().nihaozhongguo()));
printerPrintf(fmt::format("{}\n", ChineseGb2312().nihaozhongguo()));
printerPrintf("\n");
printerPrintf("\n");
// printerPrintf("* * * * * * * * * * * * * * * \n");
// printerPrintf("123456789123456789\n");
// printerPrintf("abcdefghijk lmnopqr\n");
// printerPrintf("ABCDEF GHIJ KLMN OPQR\n");
// printerPrintf("鍏ㄦ€濈編鐗�");
// printerPrintf("鎵撳嵃娴嬭瘯");
// printerPrintf("\n");
// printerPrintf("\n");
} }
void DeviceIoControlService::printerPrintf(string str) { GET_SERVICE(UartPrinter)->print(str); }
void DeviceIoControlService::printerPrintf(string str) { GET_SERVICE(UartPrinter)->print(ZIconv::utf8_to_gb2312(str)); }

46
src/service/disinfection_ctl_service.cpp

@ -1,7 +1,11 @@
#include "disinfection_ctl_service.hpp" #include "disinfection_ctl_service.hpp"
#include <cstring>
#include <iostream>
#include "configs/gconfig.hpp" #include "configs/gconfig.hpp"
#include "iflytop/components/uart_printer/uart_printer.hpp" #include "iflytop/components/uart_printer/uart_printer.hpp"
#include "service/device_state_service.hpp"
using namespace iflytop; using namespace iflytop;
using namespace std; using namespace std;
@ -204,9 +208,11 @@ void DisinfectionCtrlService::initContext(DisinfectionContext& context,
m_context.m_state = kpreheat; m_context.m_state = kpreheat;
m_context.m_starttp = zsteady_clock().now();
m_context.m_starttp = zsteady_clock().now();
m_context.m_starttp_str = getTime();
m_zcanHost->warning_light_ctrl_c1002(1, 0, 0, 1, 0); m_zcanHost->warning_light_ctrl_c1002(1, 0, 0, 1, 0);
// usleep(100 * 1000);
m_deviceIoControlService->heartingPlate_setPower(true); m_deviceIoControlService->heartingPlate_setPower(true);
context.csvlogger = m_disinfectionLogsManager->createNewLogger(context.m_disinfectionID); context.csvlogger = m_disinfectionLogsManager->createNewLogger(context.m_disinfectionID);
@ -339,6 +345,43 @@ void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context)
getEstimatedRemainingTimeS()); getEstimatedRemainingTimeS());
} }
void DisinfectionCtrlService::printfDisinfectionContextResult() {
/**
* @brief
* = = = = = = = = = = = = = = =
*
* XXXXX
* 2021-03-10 10:00:00
* 2021-03-10 10:00:00
* 01:59
* LOG 6
* LOG 6
* = = = = = = = = = = = = = = =
*
*/
auto dio = m_deviceIoControlService;
auto ds = GET_SERVICE(DeviceStateService);
m_context.m_endtp_str = getTime();
int totaltime = zsteady_clock().elapsedTimeS(m_context.m_starttp);
dio->printerPrintf(fmt::format("= = = = = = = = = = = = = = = \n"));
dio->printerPrintf(fmt::format(" 全思美特\n"));
dio->printerPrintf(fmt::format("操作人 {}\n", ds->getLoginUid()));
dio->printerPrintf(fmt::format("开始时间 {}\n", m_context.m_starttp_str));
dio->printerPrintf(fmt::format("结束时间 {}\n", m_context.m_endtp_str));
dio->printerPrintf(fmt::format("总耗时 {}:{}\n", totaltime / 60, totaltime % 60));
dio->printerPrintf(fmt::format("目标LOG {}\n", (int)m_context.m_targetLoglevel));
dio->printerPrintf(fmt::format("实际LOG {}\n", (int)m_context.m_nowLoglevel));
dio->printerPrintf(fmt::format("= = = = = = = = = = = = = = = \n"));
dio->printerPrintf(fmt::format("\n"));
dio->printerPrintf(fmt::format("\n"));
dio->printerPrintf(fmt::format("\n"));
// getTime
// dio->printerPrintf(fmt::format("开始时间 {}\n", zsteady_clock().formatTime(m_context.m_starttp)));
}
/** /**
* @brief * @brief
* *
@ -529,6 +572,7 @@ void DisinfectionCtrlService::startDisinfection(int loglevel, //
} }
} }
printfDisinfectionContextResult();
// //
finishDisinfection(m_context); finishDisinfection(m_context);
})); }));

43
src/service/disinfection_ctl_service.hpp

@ -35,6 +35,7 @@
namespace iflytop { namespace iflytop {
using namespace std; using namespace std;
using namespace core; using namespace core;
class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlService> { class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlService> {
ENABLE_LOGGER(DisinfectionCtrlService); ENABLE_LOGGER(DisinfectionCtrlService);
@ -67,9 +68,12 @@ class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlS
string m_disinfectionID; string m_disinfectionID;
zsteady_tp m_starttp; zsteady_tp m_starttp;
string m_starttp_str;
zsteady_tp m_lastComputeDvalueTp; zsteady_tp m_lastComputeDvalueTp;
zsteady_tp m_lastlogTp; zsteady_tp m_lastlogTp;
string m_endtp_str;
DeviceIoControlService::all_h2o2sensor_data_t h2o2data; DeviceIoControlService::all_h2o2sensor_data_t h2o2data;
// bool m_preheatFlag = false; // bool m_preheatFlag = false;
@ -95,8 +99,10 @@ class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlS
int continued_humi = 0; int continued_humi = 0;
shared_ptr<DisinfectionLogger> csvlogger; shared_ptr<DisinfectionLogger> csvlogger;
}; };
public:
public:
DisinfectionContext m_context; DisinfectionContext m_context;
public: public:
@ -159,24 +165,27 @@ public:
private: private:
float getDisinfectionDValue(float ppm); float getDisinfectionDValue(float ppm);
void initContext(DisinfectionContext& context, //
int loglevel, //
float injection_pump_speed, //
float stoped_gs, //
float continued_gs, //
float stoped_satur, //
float continued_satur, //
float stoped_humi, //
float continued_humi //
);
void computeRemainTime(DisinfectionContext& context);
void initContext(DisinfectionContext& context, //
int loglevel, //
float injection_pump_speed, //
float stoped_gs, //
float continued_gs, //
float stoped_satur, //
float continued_satur, //
float stoped_humi, //
float continued_humi //
);
void computeRemainTime(DisinfectionContext& context);
float computeNowLogLevel(DisinfectionContext& context); float computeNowLogLevel(DisinfectionContext& context);
void processPreheatState(DisinfectionContext& context);
void processDisinfectionState(DisinfectionContext& context);
void dumpDisinfectionLogs(DisinfectionContext& context);
void dumpDisinfectionLogsToCSV(DisinfectionContext& context);
void finishDisinfection(DisinfectionContext& context);
void processPreheatState(DisinfectionContext& context);
void processDisinfectionState(DisinfectionContext& context);
void dumpDisinfectionLogs(DisinfectionContext& context);
void dumpDisinfectionLogsToCSV(DisinfectionContext& context);
void finishDisinfection(DisinfectionContext& context);
void disinfectionLoop(bool& breakflag); void disinfectionLoop(bool& breakflag);
private:
void printfDisinfectionContextResult();
}; };
} // namespace iflytop } // namespace iflytop

2
src/version.hpp

@ -1,2 +1,2 @@
#pragma once #pragma once
#define VERSION "1.0"
#define VERSION "1.1"
Loading…
Cancel
Save