diff --git a/PrintS/Config/ConfigManager.cpp b/PrintS/Config/ConfigManager.cpp index 5bc8622..acabac9 100644 --- a/PrintS/Config/ConfigManager.cpp +++ b/PrintS/Config/ConfigManager.cpp @@ -659,6 +659,9 @@ void ConfigManager::UpdateCfg(const ReadData& rd) { SendPowderCfg(); } break; + case SCANERCTRLCFG: + m_ScannerControlCfgDao->m_ScannerControlCfgMap[ConverType::TryToI(rd.nameKey)]->Update(rd); + break; default: break; } diff --git a/PrintS/Config/bean/PowerCompensate.cpp b/PrintS/Config/bean/PowerCompensate.cpp index 2eff2c1..a80af51 100644 --- a/PrintS/Config/bean/PowerCompensate.cpp +++ b/PrintS/Config/bean/PowerCompensate.cpp @@ -1,6 +1,6 @@ #include "PowerCompensate.h" - - +#include "../DataManage/RWData.h" +#include "../utils/ConverType.hpp" PowerCompensate::PowerCompensate() { @@ -83,6 +83,22 @@ float PowerCompensateCfg::CalcPowerCompensate(float power) return rel; } +void PowerCompensateCfg::Update(const ReadData& rd) { + auto start = rd.its.begin(); + while (start != rd.its.end()) { + int percent = ConverType::TryToI(start->nameKey); + for (auto it = m_pcs.begin(); it != m_pcs.end(); ++it) { + if ((*it)->m_percent == percent) { + (*it)->m_value = ConverType::TryToF(start->strValue); + break; + } + } + ++start; + } + + +} + bool PowerCompensateLess(const PowerCompensate * m1, const PowerCompensate * m2) { return m1->m_percent < m2->m_percent; } \ No newline at end of file diff --git a/PrintS/Config/bean/PowerCompensate.h b/PrintS/Config/bean/PowerCompensate.h index 44da056..92d2de8 100644 --- a/PrintS/Config/bean/PowerCompensate.h +++ b/PrintS/Config/bean/PowerCompensate.h @@ -2,6 +2,7 @@ #include #include #include "../protobuf/stream.pb.h" +#include "../DataManage/RWData.h" using namespace std; class PowerCompensate @@ -33,6 +34,7 @@ public: PowerCompensateCfg(); ~PowerCompensateCfg(); float CalcPowerCompensate(float power); + void Update(const ReadData& rd); public: vector m_pcs; }; diff --git a/PrintS/Config/bean/ScannerControlCfg.cpp b/PrintS/Config/bean/ScannerControlCfg.cpp index 31fecc9..8ef85e7 100644 --- a/PrintS/Config/bean/ScannerControlCfg.cpp +++ b/PrintS/Config/bean/ScannerControlCfg.cpp @@ -1,5 +1,5 @@ #include "ScannerControlCfg.h" - +#include "../utils/ConverType.hpp" ScannerControlCfg::ScannerControlCfg() @@ -70,6 +70,45 @@ void ScannerControlCfg::SetScannerCtrlCfg(stream::ScannerCrtlCfgData* sccd) { sccd->set_hadmatch(m_HadMatch); } +void ScannerControlCfg::Update(const ReadData& rd) { + + SCCFGP type = (SCCFGP)ConverType::TryToI(rd.strValue); + if (type == CTRLCFG) { + auto start = rd.its.begin(); + while (start != rd.its.end()) { + if (start->nameKey == "ControlNo") { + m_ControlNo = ConverType::TryToI(start->strValue); + } + else if (start->nameKey == "SerialNo") { + m_SerialNo = ConverType::TryToI(start->strValue); + } + else if (start->nameKey == "ControlType") { + m_ControlType = ConverType::TryToI(start->strValue); + } + else if (start->nameKey == "CardName") { + m_CardName = start->strValue; + } + else if (start->nameKey == "CardIP") { + m_CardIP = start->strValue; + } + else if (start->nameKey == "IsEnable") { + m_IsEnable = (bool)ConverType::TryToI(start->strValue); + } + else if (start->nameKey == "HadAssign") { + m_HadAssign = (bool)ConverType::TryToI(start->strValue); + } + else if (start->nameKey == "HadMatch") { + m_HadMatch =(bool)ConverType::TryToI(start->strValue); + } + ++start; + } + } + else if (type == POWERCOMPENSATECFG) { + m_ScanCfgWrapper.m_PowerCompensateCfg.Update(rd); + } + +} + const string ScannerControlCfg::TABLE_NAME="ScannerControlCfg"; const string ScannerControlCfg::FIELD_SEQ_NO="SeqNo"; const string ScannerControlCfg::FIELD_CONTROL_NO="ControlNo"; diff --git a/PrintS/Config/bean/ScannerControlCfg.h b/PrintS/Config/bean/ScannerControlCfg.h index 0dc5700..fc49571 100644 --- a/PrintS/Config/bean/ScannerControlCfg.h +++ b/PrintS/Config/bean/ScannerControlCfg.h @@ -16,7 +16,20 @@ struct CardSerialPair { string cardIP; }; -class ScannerControlCfg: public Base +enum SCCFGP { + CTRLCFG= 0, + SCANPARAMCFG, + HATCHINGPARAMS, + BORDERPARAMS, + SUPPORTPARAMS, + CORRECTPARAMCFG, + SCANTESTCFG, + SKYWRITINGCFG, + POWERCOMPENSATECFG, + TIMEPOWERCOMPENSATECFG, +}; + +class ScannerControlCfg { public: ScannerControlCfg(); @@ -27,6 +40,8 @@ public: ScanParamCfg* GetScanParamCfg(string str); void SetScannerCtrlCfg(stream::ScannerCrtlCfgData* ); + + void Update(const ReadData& rd); public: //IntData* m_Index; int m_SeqNo; //编号 ConfigManager中的m_ScannerControlCfgMap的key diff --git a/PrintS/DataManage/DataHandle.cpp b/PrintS/DataManage/DataHandle.cpp index 1518e2a..5ca7c64 100644 --- a/PrintS/DataManage/DataHandle.cpp +++ b/PrintS/DataManage/DataHandle.cpp @@ -124,6 +124,7 @@ void DataHandle::DataCallBackHandle(const ReadData& msg, const std::list& case COMMUNICATIONCFG: case ALARMCFG: case POWDERSET: + case SCANERCTRLCFG: ConfigManager::GetInstance()->UpdateCfg(msg); break; case REQUEST: diff --git a/PrintS/DataManage/RWData.h b/PrintS/DataManage/RWData.h index 5aed65e..bd3c2b5 100644 --- a/PrintS/DataManage/RWData.h +++ b/PrintS/DataManage/RWData.h @@ -160,22 +160,6 @@ struct Item { int end_layer; float powder; Item(int start_layer,int end_layer,float powder) :start_layer(start_layer), end_layer(end_layer), powder(powder){} - - // - int seqNo; //ScannerControlCfg使用 - int controlNo; - int serialNo; - int controlType; - std::string cardName; - std::string cardIP; - //bool isEnable; //是否启动 - bool hadAssign; - bool hadMatch; - Item(int seqNo, int controlNo, int serialNo, int controlType,const std::string& cardName,const std::string& cardIP, bool isEnable, bool hadAssign, bool hadMatch) - :seqNo(seqNo), controlNo(controlNo), serialNo(serialNo), controlType(controlType), - cardName(cardName), cardIP(cardIP), isEnable(isEnable), hadAssign(hadAssign), hadMatch(hadMatch) { - - } }; class ClientInfo; diff --git a/PrintS/DataManage/StreamServer.cpp b/PrintS/DataManage/StreamServer.cpp index 7e16107..c901383 100644 --- a/PrintS/DataManage/StreamServer.cpp +++ b/PrintS/DataManage/StreamServer.cpp @@ -75,14 +75,6 @@ Status StreamServer::AllStream(ServerContext* context, grpc::ServerReaderWriter< temp.end_layer = it.endlayer(); temp.powder = it.powder(); - temp.seqNo = it.seqno(); - temp.controlNo = it.controlno(); - temp.serialNo = it.serialno(); - temp.controlType = it.controltype(); - temp.cardName = it.cardname(); - temp.cardIP = it.cardip(); - temp.hadAssign = it.hadassign(); - temp.hadMatch = it.hadmatch(); paramLst.emplace_back(std::move(temp)); //直接加到readData.its上面,后续的请求无法收到,不知道为啥 } @@ -119,16 +111,6 @@ Status StreamServer::AllStream(ServerContext* context, grpc::ServerReaderWriter< paramInfo->set_startlayer(wd->start_layer); paramInfo->set_endlayer(wd->end_layer); paramInfo->set_powder(wd->powder); - - paramInfo->set_seqno(wd->seqNo); - paramInfo->set_controlno(wd->controlNo); - paramInfo->set_serialno(wd->serialNo); - paramInfo->set_controltype(wd->controlType); - paramInfo->set_cardname(wd->cardName); - paramInfo->set_cardip(wd->cardIP); - paramInfo->set_isenable(wd->isEnable); - paramInfo->set_hadassign(wd->hadAssign); - paramInfo->set_hadmatch(wd->hadMatch); } stream->Write(response); } diff --git a/PrintS/output/Release/log/2024.hbd b/PrintS/output/Release/log/2024.hbd index 2ca9619..a2c5d51 100644 Binary files a/PrintS/output/Release/log/2024.hbd and b/PrintS/output/Release/log/2024.hbd differ diff --git a/PrintS/protobuf/stream.proto b/PrintS/protobuf/stream.proto index d5ff934..87ebead 100644 --- a/PrintS/protobuf/stream.proto +++ b/PrintS/protobuf/stream.proto @@ -49,14 +49,6 @@ message ParamInfo{ int32 endLayer = 9; float powder = 10; - int32 seqNo = 11; //ScannerControlCfg使用 - int32 controlNo = 12; - int32 serialNo = 13; - int32 controlType = 14; - bytes cardName = 15; - bytes cardIP = 16; - bool hadAssign = 17; - bool hadMatch = 18; //isEnable公用 } message RequestInfo { //读 diff --git a/TestClient/DataManage/DataHandle.cpp b/TestClient/DataManage/DataHandle.cpp index ba4cd32..edda213 100644 --- a/TestClient/DataManage/DataHandle.cpp +++ b/TestClient/DataManage/DataHandle.cpp @@ -77,46 +77,42 @@ void DataHandle::PushMsg(const WriteData& wd) { } void DataHandle::PrintValue(const ReadData& msg){ - if (m_printIndex == msg.dataType) { - auto it = msg.its.begin(); - while (it != msg.its.end()) { - it->nameKey; - string valueType = m_dataTypeMp[(*it).valueType]; - if (msg.dataType >= STOPALARMCFGPARAM && msg.dataType <= WARNALARMCFGPARAM) { - printf("接收:dataType:%d,nameKey:%*s, content:%s,isEnable:%d,isAlarm:%d,isShow:%d\n", - msg.dataType, 33, it->nameKey.data(), it->content.c_str(), it->isEnable, it->isAlarm, it->isShow); - } - else if (msg.dataType == POWDERSETPARAM) { - printf("接收:dataType:%d,startLayer:%d,endLayer:%d,powder:%.2f\n", - msg.dataType,it->start_layer, it->end_layer, it->powder); - } - //else if (msg.dataType == SCANNERCONTROLCFGPARAM) { - // printf("接收:dataType:%d,seqNo:%d,controlNo:%d,serialNo:%d,controlType:%d,cardName:%s,cardIP:%s,isEnable:%d,hadAssign:%d,hadMatch:%d\n", - // msg.dataType, it->seqNo, it->controlNo, it->serialNo, it->controlType, - // it->cardName.data(), it->cardIP.data(),it->isEnable, it->hadAssign,it->hadMatch); - //} - else { - printf("接收:dataType:%d,nameKey:%*s, strvalue:%*s, valueType:%s\n", - msg.dataType, 33, it->nameKey.data(), 13, it->strValue.data(), valueType.data()); - } - ++it; - } - printf("共有参数%zd个...\n", msg.its.size()); + if (m_printIndex != msg.dataType) return; - if(m_printIndex == LASERPARAM || m_printIndex == XYSCANSTATE){ - static int count = 0; - ++count; - if (count == 4) { count = 0; m_printIndex = -1; } //激光参数默认4个 + auto it = msg.its.begin(); + while (it != msg.its.end()) { + it->nameKey; + string valueType = m_dataTypeMp[(*it).valueType]; + if (msg.dataType >= STOPALARMCFGPARAM && msg.dataType <= WARNALARMCFGPARAM) { + printf("接收:dataType:%d,nameKey:%*s, content:%s,isEnable:%d,isAlarm:%d,isShow:%d\n", + msg.dataType, 33, it->nameKey.data(), it->content.c_str(), it->isEnable, it->isAlarm, it->isShow); } - else if (m_printIndex == COMMUNICATIONCFGPARAM) { - static int count = 0; - ++count; - if (count == 23) { count = 0; m_printIndex = -1; } //激光参数默认4个 + else if (msg.dataType == POWDERSETPARAM) { + printf("接收:dataType:%d,startLayer:%d,endLayer:%d,powder:%.2f\n", + msg.dataType,it->start_layer, it->end_layer, it->powder); } else { - m_printIndex = -1; + printf("接收:dataType:%d,nameKey:%*s, strvalue:%*s, valueType:%s\n", + msg.dataType, 33, it->nameKey.data(), 13, it->strValue.data(), valueType.data()); } + ++it; } + printf("共有参数%zd个...\n", msg.its.size()); + + if(m_printIndex == LASERPARAM || m_printIndex == XYSCANSTATE){ + static int count = 0; + ++count; + if (count == 4) { count = 0; m_printIndex = -1; } //激光参数默认4个 + } + else if (m_printIndex == COMMUNICATIONCFGPARAM) { + static int count = 0; + ++count; + if (count == 23) { count = 0; m_printIndex = -1; } //激光参数默认4个 + } + else { + m_printIndex = -1; + } + } void DataHandle::DataCallBackHandle(const ReadData& msg) { @@ -236,17 +232,17 @@ int DataHandle::Request(int index) { if (userInput == "q") { printf("返回上一级...\n"); break; } - else if (userInput.empty()) { + else if (userInput.empty()) { continue; } - else if (userInput == "h") { + else if (userInput == "h") { //打印用法 ParamReadUsage(); } - else if (userInput.find("push") != string::npos) { + else if (userInput.find("push") != string::npos) { //更新数据到服务器 UpdateParamToService(userInput); } - else { - ParamRequest(ConverType::TryToI(userInput)); + else { //接收指定的参数 + ReceiveParam(ConverType::TryToI(userInput)); } } break; @@ -268,7 +264,7 @@ void DataHandle::AllTest() { } -void DataHandle::ParamRequest(int index) { +void DataHandle::ReceiveParam(int index) { if (index == VERSIONRSP) { PushMsg(VERSIONREQ); //获取版本信息 } @@ -412,7 +408,14 @@ void DataHandle::UpdateParamToService(const string& input) { writeData.items.emplace_back(Item{"","",UNKNOW,"",0,0,0,1,100,2}); PushMsg(writeData); break; - case SCANERCTRLCFGPARAM: + case SCANERCTRLCFGPARAM: + writeData = WriteData{ SCANERCTRLCFG, "1", to_string(SCCFGP::CTRLCFG), UNKNOW,UPDATE }; + writeData.items.emplace_back(Item{ "CardIP","127.0.0.1",iSTRING}); + PushMsg(writeData); + + writeData = WriteData{ SCANERCTRLCFG, "1",to_string(SCCFGP::POWERCOMPENSATECFG), UNKNOW,UPDATE }; + writeData.items.emplace_back(Item{ "10","1.323",iFLOAT }); + PushMsg(writeData); break; case ELECFGPARAM: break; diff --git a/TestClient/DataManage/DataHandle.h b/TestClient/DataManage/DataHandle.h index 4b11389..dd7fe4e 100644 --- a/TestClient/DataManage/DataHandle.h +++ b/TestClient/DataManage/DataHandle.h @@ -24,7 +24,7 @@ public: string GetVersion()const {return m_version;} - void ParamRequest(int index); + void ReceiveParam(int index); int Request(int index); void AllTest(); void AxisMoveTest(); //轴运动测试 diff --git a/TestClient/DataManage/FunC.h b/TestClient/DataManage/FunC.h index 192583c..08b161a 100644 --- a/TestClient/DataManage/FunC.h +++ b/TestClient/DataManage/FunC.h @@ -112,4 +112,17 @@ enum ConfigFunc { }; +enum SCCFGP { + CTRLCFG = 0, + SCANPARAMCFG, + HATCHINGPARAMS, + BORDERPARAMS, + SUPPORTPARAMS, + CORRECTPARAMCFG, + SCANTESTCFG, + SKYWRITINGCFG, + POWERCOMPENSATECFG, + TIMEPOWERCOMPENSATECFG, +}; + #define OUTPUTNAME(x) #x \ No newline at end of file diff --git a/TestClient/DataManage/RWData.h b/TestClient/DataManage/RWData.h index 6d91078..845021c 100644 --- a/TestClient/DataManage/RWData.h +++ b/TestClient/DataManage/RWData.h @@ -91,10 +91,9 @@ enum DATATYPE { struct Item { - std::string nameKey; //参数key + std::string nameKey; //参数key std::string strValue; //value - //bool isOutPut; //是否只读 false:只读 - DATATYPE valueType; //数据类型 + DATATYPE valueType; //数据类型 std::string content; //alarmcfgwrapper使用 bool isEnable; @@ -105,16 +104,6 @@ struct Item { int start_layer; int end_layer; float powder; - - int seqNo; //ScannerControlCfg使用 - int controlNo; - int serialNo; - int controlType; - std::string cardName; - std::string cardIP; - //bool isEnable; //是否启动 - bool hadAssign; - bool hadMatch; }; struct ReadData { diff --git a/TestClient/DataManage/StreamClient.cpp b/TestClient/DataManage/StreamClient.cpp index bc336e9..d77caa7 100644 --- a/TestClient/DataManage/StreamClient.cpp +++ b/TestClient/DataManage/StreamClient.cpp @@ -74,8 +74,7 @@ void StreamClient::AllStream() { for (const ::stream::ParamInfo& it : readInfo.item()) { readData.its.emplace_back(Item{ it.namekey(),it.strvalue(),(DATATYPE)it.valuetype() ,it.context(),it.isenable(),it.isalarm(),it.isshow() - ,it.startlayer(),it.endlayer(),it.powder(),it.seqno(),it.controlno(),it.serialno() - ,it.controltype(),it.cardname(),it.cardip(),it.hadassign(),it.hadmatch()}); + ,it.startlayer(),it.endlayer(),it.powder()}); //printf("接收到服务端消息:dataType:%d,nameKey:%s, strvalue:%s,valueType:%d\n", // readData.dataType, it.namekey().data(), it.strvalue().c_str(), it.valuetype()); }