From 846fac1d9715dd43757f719a28291c44cdfb4dd8 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 26 Dec 2023 21:46:08 +0800 Subject: [PATCH] v1.0 --- README.md | 34 +++-------------- iflytoplinuxsdk | 2 +- src/configs/gconfig.hpp | 3 +- src/main.cpp | 3 ++ src/service/device_io_control_service.cpp | 7 +++- src/service/device_io_control_service.hpp | 3 ++ src/service/disinfection_ctl_service.cpp | 61 +++++++++++++++++++++++++++++-- src/service/disinfection_ctl_service.hpp | 43 +++++++++++++--------- src/version.hpp | 2 +- 9 files changed, 105 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 71fa15d..cdb7a0c 100644 --- a/README.md +++ b/README.md @@ -2,32 +2,11 @@ # 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 ``` -``` -scp ./build/app/app.out root@192.168.8.176:/app/ -``` # 依赖 diff --git a/iflytoplinuxsdk b/iflytoplinuxsdk index a98acfa..40d9295 160000 --- a/iflytoplinuxsdk +++ b/iflytoplinuxsdk @@ -1 +1 @@ -Subproject commit a98acfa311912201672637c608f368e2778aabdc +Subproject commit 40d9295ae234e07e9df3a696e3146393d2e2d938 diff --git a/src/configs/gconfig.hpp b/src/configs/gconfig.hpp index f5c3ae6..b396929 100644 --- a/src/configs/gconfig.hpp +++ b/src/configs/gconfig.hpp @@ -19,7 +19,8 @@ marco(string /* */, iflytopSubDeviceCanIFName, "can0") /*子设备Can设备名称*/ \ marco(int32_t /* */, iflytopSubDeviceCanBitrate, 500000) /*子设备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( // GConfig, // diff --git a/src/main.cpp b/src/main.cpp index ffcaa10..0577c2b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,6 +2,7 @@ #include #include +#include "iflytop/components/uart_printer/uart_printer.hpp" using namespace iflytop; using namespace core; @@ -58,6 +59,8 @@ int Main::main(int argc, char *argv[]) { BUILD_AND_REG_SERRVICE(GConfig); GET_SERVICE(GConfig)->initialize(); + BUILD_AND_REG_SERRVICE(UartPrinter); + GET_SERVICE(UartPrinter)->initialize("/dev/ttyS5", "9600"); /** * @brief */ diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index 0c60c22..9979deb 100644 --- a/src/service/device_io_control_service.cpp +++ b/src/service/device_io_control_service.cpp @@ -1,5 +1,6 @@ #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 std; @@ -456,3 +457,7 @@ bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2se } return true; } + + +void DeviceIoControlService::printerTest() {} +void DeviceIoControlService::printerPrintf(string str) { GET_SERVICE(UartPrinter)->print(ZIconv::utf8_to_gb2312(str)); } diff --git a/src/service/device_io_control_service.hpp b/src/service/device_io_control_service.hpp index ae17436..18057fa 100644 --- a/src/service/device_io_control_service.hpp +++ b/src/service/device_io_control_service.hpp @@ -72,6 +72,9 @@ class DeviceIoControlService : public enable_shared_from_this +#include + +#include "configs/gconfig.hpp" +#include "iflytop/components/uart_printer/uart_printer.hpp" +#include "service/device_state_service.hpp" + using namespace iflytop; using namespace std; /** @@ -199,9 +207,11 @@ void DisinfectionCtrlService::initContext(DisinfectionContext& context, 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); + // usleep(100 * 1000); m_deviceIoControlService->heartingPlate_setPower(true); context.csvlogger = m_disinfectionLogsManager->createNewLogger(context.m_disinfectionID); @@ -337,6 +347,43 @@ void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context) 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 * 消毒中状态处理 @@ -483,8 +530,7 @@ void DisinfectionCtrlService::changeDisinfectionParameter(int injection_pump_spe m_context.continued_humi = continued_humi; 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, // @@ -519,6 +565,7 @@ void DisinfectionCtrlService::startDisinfection(int loglevel, // } } + printfDisinfectionContextResult(); // finishDisinfection(m_context); })); @@ -591,6 +638,14 @@ void DisinfectionCtrlService::startReplenishingFluids(int stopatg) { m_disinfectionThread->join(); 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(); if (nowvolume > stopatg) { logger->warn("start Replenishing fail, nowvolume {} > stopatg {}", nowvolume, stopatg); diff --git a/src/service/disinfection_ctl_service.hpp b/src/service/disinfection_ctl_service.hpp index 4066b58..a4e076d 100644 --- a/src/service/disinfection_ctl_service.hpp +++ b/src/service/disinfection_ctl_service.hpp @@ -35,6 +35,7 @@ namespace iflytop { using namespace std; using namespace core; + class DisinfectionCtrlService : public enable_shared_from_this { ENABLE_LOGGER(DisinfectionCtrlService); @@ -67,9 +68,12 @@ class DisinfectionCtrlService : public enable_shared_from_this csvlogger; + }; -public: + + public: DisinfectionContext m_context; public: @@ -159,24 +165,27 @@ public: private: 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); - 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); + + private: + void printfDisinfectionContextResult(); }; } // namespace iflytop \ No newline at end of file diff --git a/src/version.hpp b/src/version.hpp index 025956d..939163c 100644 --- a/src/version.hpp +++ b/src/version.hpp @@ -1,2 +1,2 @@ #pragma once -#define VERSION "0.1" \ No newline at end of file +#define VERSION "pipeline_disinfection_1.0" \ No newline at end of file