Browse Source

v1.0

master
zhaohe 2 years ago
parent
commit
846fac1d97
  1. 34
      README.md
  2. 2
      iflytoplinuxsdk
  3. 3
      src/configs/gconfig.hpp
  4. 3
      src/main.cpp
  5. 7
      src/service/device_io_control_service.cpp
  6. 3
      src/service/device_io_control_service.hpp
  7. 61
      src/service/disinfection_ctl_service.cpp
  8. 43
      src/service/disinfection_ctl_service.hpp
  9. 2
      src/version.hpp

34
README.md

@ -2,32 +2,11 @@
# README # README
``` ```
1. 输入rootiflytop9973可以进入超级用户
2. ws测试地址: ws://192.168.8.10:19001
{
"command":"exceCanCmd",
"cancmd":"call 1007 1"
}
{
"command":"exceCanCmd",
"cancmd":"huacheng_pressure_sensor_read_c1005 0"
}
{
"command":"exceCanCmd",
"cancmd":"huacheng_pressure_sensor_read_c1005 1"
}
{
"command":"exceCanCmd",
"cancmd":"huacheng_pressure_sensor_read_c1005 2"
}
{
"command":"exceCanCmd",
"cancmd":"huacheng_pressure_sensor_read_c1005 3"
}
1.1
1.添加打印机逻辑
``` ```
# 编译 # 编译
@ -35,9 +14,6 @@
``` ```
./build.sh ./build.sh
``` ```
```
scp ./build/app/app.out root@192.168.8.176:/app/
```
# 依赖 # 依赖

2
iflytoplinuxsdk

@ -1 +1 @@
Subproject commit a98acfa311912201672637c608f368e2778aabdc
Subproject commit 40d9295ae234e07e9df3a696e3146393d2e2d938

3
src/configs/gconfig.hpp

@ -19,7 +19,8 @@
marco(string /* */, iflytopSubDeviceCanIFName, "can0") /*子设备Can设备名称*/ \ marco(string /* */, iflytopSubDeviceCanIFName, "can0") /*子设备Can设备名称*/ \
marco(int32_t /* */, iflytopSubDeviceCanBitrate, 500000) /*子设备Can设备波特率*/ \ marco(int32_t /* */, iflytopSubDeviceCanBitrate, 500000) /*子设备Can设备波特率*/ \
marco(string /* */, pipettingRobotCanIFName, "can1") /*移液臂Can设备名称*/ \ marco(string /* */, pipettingRobotCanIFName, "can1") /*移液臂Can设备名称*/ \
marco(int32_t /* */, pipettingRobotCanBitrate, 500000) /*移液臂Can设备波特率*/
marco(int32_t /* */, pipettingRobotCanBitrate, 500000) /*移液臂Can设备波特率*/ \
marco(int32_t /* */, disinfectantBucketCapacity_g, 2500) /*消毒桶容积*/
configTemplateDEFILE_CONFIG_SERVICE2( // configTemplateDEFILE_CONFIG_SERVICE2( //
GConfig, // GConfig, //

3
src/main.cpp

@ -2,6 +2,7 @@
#include <signal.h> #include <signal.h>
#include <sqlite3.h> #include <sqlite3.h>
#include "iflytop/components/uart_printer/uart_printer.hpp"
using namespace iflytop; using namespace iflytop;
using namespace core; using namespace core;
@ -58,6 +59,8 @@ int Main::main(int argc, char *argv[]) {
BUILD_AND_REG_SERRVICE(GConfig); BUILD_AND_REG_SERRVICE(GConfig);
GET_SERVICE(GConfig)->initialize(); GET_SERVICE(GConfig)->initialize();
BUILD_AND_REG_SERRVICE(UartPrinter);
GET_SERVICE(UartPrinter)->initialize("/dev/ttyS5", "9600");
/** /**
* @brief * @brief
*/ */

7
src/service/device_io_control_service.cpp

@ -1,5 +1,6 @@
#include "device_io_control_service.hpp" #include "device_io_control_service.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;
@ -456,3 +457,7 @@ bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2se
} }
return true; return true;
} }
void DeviceIoControlService::printerTest() {}
void DeviceIoControlService::printerPrintf(string str) { GET_SERVICE(UartPrinter)->print(ZIconv::utf8_to_gb2312(str)); }

3
src/service/device_io_control_service.hpp

@ -72,6 +72,9 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
virtual void initialize(); virtual void initialize();
virtual void startScan(); virtual void startScan();
void printerPrintf(string str);
void printerTest();
public: public:
/******************************************************************************* /*******************************************************************************
* * * *

61
src/service/disinfection_ctl_service.cpp

@ -1,4 +1,12 @@
#include "disinfection_ctl_service.hpp" #include "disinfection_ctl_service.hpp"
#include <cstring>
#include <iostream>
#include "configs/gconfig.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;
/** /**
@ -199,9 +207,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);
@ -337,6 +347,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) / 60;
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
* *
@ -483,8 +530,7 @@ void DisinfectionCtrlService::changeDisinfectionParameter(int injection_pump_spe
m_context.continued_humi = continued_humi; m_context.continued_humi = continued_humi;
m_context.injection_pump_speed_changed = true; m_context.injection_pump_speed_changed = true;
logger->info("changeDisinfectionParameter {} {} {} {} {} {} {}", injection_pump_speed, stoped_gs, continued_gs, stoped_satur, continued_satur, stoped_humi,
continued_humi);
logger->info("changeDisinfectionParameter {} {} {} {} {} {} {}", injection_pump_speed, stoped_gs, continued_gs, stoped_satur, continued_satur, stoped_humi, continued_humi);
} }
void DisinfectionCtrlService::startDisinfection(int loglevel, // void DisinfectionCtrlService::startDisinfection(int loglevel, //
@ -519,6 +565,7 @@ void DisinfectionCtrlService::startDisinfection(int loglevel, //
} }
} }
printfDisinfectionContextResult();
// //
finishDisinfection(m_context); finishDisinfection(m_context);
})); }));
@ -591,6 +638,14 @@ void DisinfectionCtrlService::startReplenishingFluids(int stopatg) {
m_disinfectionThread->join(); m_disinfectionThread->join();
m_disinfectionThread = nullptr; m_disinfectionThread = nullptr;
} }
int maxg = GET_SERVICE(GConfig)->get_disinfectantBucketCapacity_g();
if (stopatg > maxg) {
logger->warn("start Replenishing fail, stopatg {} > maxg {}", stopatg, maxg);
stopatg = maxg;
}
int32_t nowvolume = m_deviceIoControlService->getDisinfectantVolume_g(); int32_t nowvolume = m_deviceIoControlService->getDisinfectantVolume_g();
if (nowvolume > stopatg) { if (nowvolume > stopatg) {
logger->warn("start Replenishing fail, nowvolume {} > stopatg {}", nowvolume, stopatg); logger->warn("start Replenishing fail, nowvolume {} > stopatg {}", nowvolume, stopatg);

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 "0.1"
#define VERSION "pipeline_disinfection_1.0"
Loading…
Cancel
Save