This commit is contained in:
wangxx1809 2024-06-05 17:02:17 +08:00
parent 89ec22ec58
commit 2cf690e6e7
14 changed files with 216 additions and 133 deletions

View File

@ -3,6 +3,16 @@
ScannerControlCfg::ScannerControlCfg()
: m_Index(new IntData("Index"))
, m_SeqNo(new IntData("SeqNo"))
, m_ControlNo(new IntData("ControlNo"))
, m_SerialNo(new IntData("SerialNo"))
, m_ControlType(new IntData("ControlType"))
, m_CardName(new StrData("CardName"))
, m_CardIP(new StrData("CardIP"))
, m_IsEnable(new BoolData("IsEnable"))
, m_HadAssign(new BoolData("HadAssign"))
, m_HadMatch(new BoolData("HadMatch"))
{
}

View File

@ -35,6 +35,7 @@ public:
BoolData* m_HadAssign;
BoolData* m_HadMatch;
ScanCfgWrapper m_ScanCfgWrapper;
FixPointWrapper m_FixPointWrapper;

View File

@ -95,8 +95,8 @@ void DataHandle::DataCallBackHandle(const ReadData& msg, const std::list<Item>&
m_controller->m_Axis->StopAll(); break;
case READTYPE::LOADPARAM:
m_controller->m_Machine->Update(msg,LOADPARAMRSP); break;
case SCANCTRLFUNC:
m_controller->m_ScannerCtrl->CallFunc(msg); break;
case SCANCTRLFUNC: //需要先释放ScannerCtrl::Init()内部代码块
m_controller->m_ScannerCtrl->CallFunc(msg, its); break;
case CAMERAFUNC:
m_controller->m_Camera->CallFunc(msg,nullptr); break;
case CAMERAPARAMUPDATE:
@ -120,7 +120,7 @@ void DataHandle::DataCallBackHandle(const ReadData& msg, const std::list<Item>&
break;
case REQUEST:
if (!msg.nameKey.empty() && ConverType::TryToI( msg.nameKey) == XYSCANSTATE) {
printf("error,40 需要释放ScannerCtrl::Init()内部代码块...\n");
//printf("error,XYSCANSTATE 需要释放ScannerCtrl::Init()内部代码块...\n");
for (int i = 0; i < 4; ++i) { //需要先打开ScannerCtrl::Init()代码块
Scanner* p = (m_controller->m_ScannerCtrl->GetScanners())->at(i);
p->GetScanStateXY().SendToClients(XYSCANSTATE, "_" + to_string(i));

View File

@ -242,10 +242,11 @@ void Scanner::Clean()
m_OrderDataCountMap.clear();
EnterCriticalSection(&m_SeqCS);
int seqNo = m_ScannerControlCfg->m_SeqNo->GetValue();
m_SeqDataUnFinishBit[seqNo] = false;
m_SupportSeqDataUnFinishBit[seqNo] = false;
if (m_ScannerControlCfg){
int seqNo = m_ScannerControlCfg->m_SeqNo->GetValue();
m_SeqDataUnFinishBit[seqNo] = false;
m_SupportSeqDataUnFinishBit[seqNo] = false;
}
LeaveCriticalSection(&m_SeqCS);
}

View File

@ -79,9 +79,9 @@ public:
virtual void SetK(double k){}
double GetK() { return m_kfactor; }
ScannerControlCfg* GetConfig() { return m_ScannerControlCfg; }
ScannerControlCfg* GetConfig() { return m_ScannerControlCfg; } //传 暂未
bool IsDebugEnable();
bool IsDebugEnable(); //已传
void StartDebugTest();
void StopDebugTest();
@ -93,14 +93,14 @@ public:
void StartHeatingScannerTest();
void StopHeatingScannerTest();
bool IsHeatingScannerTest();
bool IsHeatingScannerTest(); //不传
void WaitHeatingScanner();
void WaitHeatingScanner(); //不传
void StartGetScanInfo();
void StopGetScanInfo();
void SetAutoUpdateScanInfo(bool isauto);
void GetXYScanState(ScanStateXYSCT* scanstate, time_t &t);
void GetXYScanState(ScanStateXYSCT* scanstate, time_t &t); //已传参数 服务端参数更新或者客户端请求时传到客户端 XYSCANSTATE
virtual void UpdateScannerInfo() {}
//bool IsUpScanner();

View File

@ -76,7 +76,7 @@ bool ScannerCtrl::Init() {
bool rel = false;
unsigned int card_num = 0;
if (!g_isDebug && !RTC5Scanner::PreInit(card_num))
if (!RTC5Scanner::PreInit(card_num))
{
return false;
}
@ -119,11 +119,6 @@ bool ScannerCtrl::Init() {
{
g_log->TraceError(g_LngManager->Log_NoScannerCtrl->ShowText());
m_InitErrorInfos.push_back(g_LngManager->Log_NoScannerCtrl->ShowText());
for (int i = 0; i < 4; ++i) { //wxxtest
Scanner* scanner = new RTC5Scanner(nullptr, i);
m_scan.push_back(scanner);
}
return false;
}
@ -147,6 +142,10 @@ bool ScannerCtrl::Init() {
ConfigManager::GetInstance()->GetMatchScannerControlCfg()->push_back(cfg);
m_scan.push_back(scanner);
}
else if (g_isDebug) { //wxxtest
ConfigManager::GetInstance()->GetMatchScannerControlCfg()->push_back(cfg);
m_scan.push_back(scanner);
}
else
{
delete scanner;
@ -1870,83 +1869,93 @@ void ScannerCtrl::RemoveScanner(int seq)
//}
void ScannerCtrl::CallFunc(const ReadData& rd) {
void ScannerCtrl::CallFunc(const ReadData& rd, const list<Item>& lst) {
FUNCNAME func = (FUNCNAME)ConverType::TryToI(rd.nameKey);
switch (func) {
case BEGINWORK:
BeginWork();
break;
case PAUSEWORK:
PauseWork();
break;
case PAUSEAUTO:
PauseAuto();
break;
case STOPWORK:
StopWork();
break;
case STOPREDTEST:
StopRedTest();
break;
case TESTLAYER:
TestLayer();
break;
case REMOVESCANNER:
RemoveScanner(ConverType::TryToI(rd.strValue));
break;
case STARTHEATINGMOTION:
StartHeatingMotion();
break;
case STOPHEATINGMOTION:
StopHeatingMotion((bool)ConverType::TryToI(rd.strValue));
break;
case STARTDEBUGTEST:
if (!ConverType::IsToI(rd.strValue) || ConverType::TryToI(rd.strValue) >= m_scan.size()) {
printf("%d index is out of range...\n",__LINE__);
break;
}
m_scan[stoi(rd.strValue)]->StartDebugTest();
break;
case STOPDEBUGTEST:
if (!ConverType::IsToI(rd.strValue) || ConverType::TryToI(rd.strValue) >= m_scan.size()) {
printf("%d index is out of range...\n", __LINE__);
break;
}
m_scan[ConverType::TryToI(rd.strValue)]->StopDebugTest();
break;
case STARTHEATINGSCANNERTEST:
if (!ConverType::IsToI(rd.strValue) || ConverType::TryToI(rd.strValue) >= m_scan.size()) {
printf("%d index is out of range...\n", __LINE__);
break;
}
m_scan[ConverType::TryToI(rd.strValue)]->StartHeatingScannerTest();
break;
case STOPHEATINGSCANNERTEST:
if (!ConverType::IsToI(rd.strValue) || ConverType::TryToI(rd.strValue) >= m_scan.size()) {
printf("%d index is out of range...\n", __LINE__);
break;
}
m_scan[ConverType::TryToI(rd.strValue)]->StopHeatingScannerTest();
break;
case STARTGETSCANINFO:
if (!ConverType::IsToI(rd.strValue) || ConverType::TryToI(rd.strValue) >= m_scan.size()) {
printf("%d index is out of range...\n", __LINE__);
break;
}
m_scan[ConverType::TryToI(rd.strValue)]->StartGetScanInfo();
break;
case STOPGETSCANINFO:
if (!ConverType::IsToI(rd.strValue) || ConverType::TryToI(rd.strValue) >= m_scan.size()) {
printf("%d index is out of range...\n", __LINE__);
break;
}
m_scan[ConverType::TryToI(rd.strValue)]->StopGetScanInfo();
break;
default:
printf("参数不对...\n");
break;
case BEGINWORK:
BeginWork(); break;
case PAUSEWORK:
PauseWork(); break;
case PAUSEAUTO:
PauseAuto(); break;
case STOPWORK:
StopWork(); break;
case STOPREDTEST:
StopRedTest(); break;
case TESTLAYER:
TestLayer(); break;
case REMOVESCANNER:
RemoveScanner(ConverType::TryToI(rd.strValue)); break;
case STARTHEATINGMOTION:
StartHeatingMotion(); break;
case STOPHEATINGMOTION:
StopHeatingMotion((bool)ConverType::TryToI(rd.strValue)); break;
default: break;
}
if (func <= STOPHEATINGMOTION) return;
if (!ConverType::IsToI(rd.strValue) || ConverType::TryToI(rd.strValue) >= m_scan.size()) {
printf("%d index is out of range...\n", __LINE__);
return;
}
int index = ConverType::TryToI(rd.strValue); //编号
switch (func) {
case STARTDEBUGTEST:
m_scan[index]->StartDebugTest(); break;
case STOPDEBUGTEST:
m_scan[index]->StopDebugTest(); break;
case STARTHEATINGSCANNERTEST:
m_scan[index]->StartHeatingScannerTest(); break;
case STOPHEATINGSCANNERTEST:
m_scan[index]->StopHeatingScannerTest(); break;
case STARTGETSCANINFO:
m_scan[index]->StartGetScanInfo(); break;
case STOPGETSCANINFO:
m_scan[index]->StopGetScanInfo(); break;
case UPDATESETTING:
m_scan[index]->UpdateSetting(); break;
default:
break;
}
if (SETXYOFFSET == func) {
float x = 0.0f, y = 0.0f;
for (auto item = lst.begin(); item != lst.end(); ++item) {
if (item->nameKey == "x") x = ConverType::TryToF(item->strValue);
if (item->nameKey == "y") y = ConverType::TryToF(item->strValue);
}
m_scan[index]->SetXyOffset(x,y);
}
else if (SETANGLE == func) {
double angle = 0.0;
for (auto item = lst.begin(); item != lst.end(); ++item) {
if (item->nameKey == "angle") angle = ConverType::TryToD(item->strValue);
}
m_scan[index]->SetAngle(angle);
}
else if (UPDATESKYWRITING == func) {
bool isList = false;
for (auto item = lst.begin(); item != lst.end(); ++item) {
if (item->nameKey == "isList") isList = (bool)ConverType::TryToI(item->strValue);
}
m_scan[index]->UpdateSkyWriting(isList);
}
else if (SETXYCORRECT == func) {
double x = 0.0, y = 0.0;
for (auto item = lst.begin(); item != lst.end(); ++item) {
if (item->nameKey == "x") x = ConverType::TryToD(item->strValue);
if (item->nameKey == "y") y = ConverType::TryToD(item->strValue);
}
m_scan[index]->SetXYCorrect(x,y);
}
if (SETK == func) {
double k = 0.0;
for (auto item = lst.begin(); item != lst.end(); ++item) {
if (item->nameKey == "k") k = ConverType::TryToD(item->strValue);
}
m_scan[index]->SetK(k);
}
}
@ -1961,6 +1970,7 @@ void ScannerCtrl::SendToClients() {
for (int i = 0; i < count; ++i) {
lst.emplace_back(Item{ "IsDebugEnable_"+to_string(i), to_string(m_scan[i]->IsDebugEnable()), iBOOL});
lst.emplace_back(Item{ "IsHeatingScannerTest_"+to_string(i), to_string(m_scan[i]->IsHeatingScannerTest()), iBOOL});
lst.emplace_back(Item{ "IsScannerComAlarm_"+to_string(i), to_string(m_scan[i]->IsScannerComAlarm()), iBOOL});
}
auto iter = Scanner::m_CurrentSerio.begin();

View File

@ -23,12 +23,20 @@ enum FUNCNAME {
STARTHEATINGMOTION,
STOPHEATINGMOTION,
STARTDEBUGTEST, //scanner函数
//以下是scanner函数
STARTDEBUGTEST,
STOPDEBUGTEST,
STARTHEATINGSCANNERTEST,
STOPHEATINGSCANNERTEST,
STARTGETSCANINFO,
STOPGETSCANINFO,
SETXYOFFSET,
SETANGLE,
UPDATESETTING,
UPDATESKYWRITING,
SETXYCORRECT,
SETK,
};
@ -51,7 +59,7 @@ public:
bool IsTestLayerEnable();
void StopRedTest();
void TestLayer();
vector<Scanner*>* GetScanners() { return &m_scan; } //待处理
vector<Scanner*>* GetScanners() { return &m_scan; } //已传 被分解了
JobController* GetJobController() { return m_job_controller; }
void RemoveScanner(int seq);
@ -81,7 +89,7 @@ public:
void SetRemoteClient(RemoteClient* rc) { m_RemoteClient = rc; }
void CallFunc(const ReadData& rd);
void CallFunc(const ReadData& rd, const list<Item>& lst);
void SendToClients();

View File

@ -27,22 +27,22 @@ public:
virtual int Process(string jobfile) = 0;
virtual int GetCurrentLayerIndex(void) = 0;
virtual int GetPreviewLayerIndex(void) = 0;
virtual MetaData* GetMetaData() = 0;
virtual string GetJobTitle() = 0;
virtual MetaData* GetMetaData() = 0; //传
virtual string GetJobTitle() = 0; //传
virtual string GetMaterialName() = 0;
virtual double GetLayerThickness() = 0;
virtual unsigned int GetLayerCount() = 0;
virtual int GetComponentCount() = 0;
virtual MetaData::Layer* GetLayer(unsigned int index) = 0;
virtual unsigned int GetLayerCount() = 0; //传
virtual int GetComponentCount() = 0; //传
virtual MetaData::Layer* GetLayer(unsigned int index) = 0; //传
virtual int GetLayerIndex(MetaData::Layer* layer) = 0;
virtual string GetJobUid() = 0;
virtual string GetJobUid() = 0; //传
virtual FileType GetFileType() = 0;
virtual void UpdateFile(){}
string GetJobFileName() { return m_job_file_name; }
bool IsLayerInherit(void) { return m_LayerInherit; }
void SetLayerInherit(bool layer_inherit) { m_LayerInherit = layer_inherit; }
unsigned int GetStartIndex() { return m_StartIndex; }
string GetJobFileName() { return m_job_file_name; } //传
bool IsLayerInherit(void) { return m_LayerInherit; } //传
void SetLayerInherit(bool layer_inherit) { m_LayerInherit = layer_inherit; } //传
unsigned int GetStartIndex() { return m_StartIndex; } //传
virtual void SetStartIndex(unsigned int index) { m_StartIndex = index; }
bool IsFinished() { return m_IsFinished; }
void SetFinished(bool isf) { m_IsFinished = isf; if (isf) SetStartIndex(0); }

View File

@ -4,6 +4,15 @@
#include "JobFileProcessor.h"
#include "H3DFileProcessor.h"
enum JobControllerFunc {
LOADJOB = 0,
REMOVEALLJOB,
GETLOADPROGRESS,
GETLOADINFO,
ISLOADFINISHED,
};
class JobController
{
public:
@ -22,22 +31,22 @@ public:
{
DeleteCriticalSection(&m_LoadInfoCS);
}
bool LoadJob(string filepath);
void StartLoadPrepareJob();
bool LoadJob(string filepath); //传
void StartLoadPrepareJob(); //不用
void RemoveJob(string job_title);
void RemoveAllJob();
FileProcessor* GetJob(void) {
void RemoveJob(string job_title); //无用
void RemoveAllJob(); //传
FileProcessor* GetJob(void) { //传
return m_CurrentJob; }
FileProcessor* GetUnFinishedJob();
float GetLoadProgress();
string GetLoadInfo();
bool IsLoadFinished();
FileProcessor* GetUnFinishedJob(); //不用
float GetLoadProgress(); //传
string GetLoadInfo(); //传
bool IsLoadFinished(); //传
void StartSavePrepareJob();
bool IsSavingPrepareJob();
void StartSavePrepareJob(); //无用
bool IsSavingPrepareJob(); //无用
static void SetLoadProgress(float fvalue) {
static void SetLoadProgress(float fvalue) { //无用
EnterCriticalSection(&m_LoadInfoCS);
m_LoadProgress = fvalue;
LeaveCriticalSection(&m_LoadInfoCS);

View File

@ -15,8 +15,8 @@ int main(int argc, char** argv) {
std::getline(std::cin, userInput); // 读取用户输入
unknowCmd = false;
if (userInput == "r" || userInput == "run") {
printf("service is running...\n");
hbd->Run();
printf("service is running...\n");
}
else if (userInput == "s" || userInput == "stop") {
hbd->Stop();

Binary file not shown.

Binary file not shown.

View File

@ -337,22 +337,48 @@ void DataHandle::AxisMoveTest() {
//扫描控制测试
void DataHandle::ScanCtrlTest() {
PushMsg(SCANCTRLFUNC, to_string(BEGINWORK)); printf("call BEGINWORK function...\n");
PushMsg(SCANCTRLFUNC, to_string(PAUSEWORK)); printf("call PAUSEWORK function...\n");
PushMsg(SCANCTRLFUNC, to_string(PAUSEAUTO)); printf("call PAUSEAUTO function...\n");
PushMsg(SCANCTRLFUNC, to_string(STOPWORK)); printf("call STOPWORK function...\n");
PushMsg(SCANCTRLFUNC, to_string(STOPREDTEST)); printf("call STOPREDTEST function...\n");
PushMsg(SCANCTRLFUNC, to_string(TESTLAYER)); printf("call TESTLAYER function...\n");
PushMsg(SCANCTRLFUNC, to_string(REMOVESCANNER), to_string(1), iINT); printf("call REMOVESCANNER function...\n");
PushMsg(SCANCTRLFUNC, to_string(STARTHEATINGMOTION)); printf("call STARTHEATINGMOTION function...\n");
PushMsg(SCANCTRLFUNC, to_string(STOPHEATINGMOTION), to_string(0), iBOOL); printf("call STOPHEATINGMOTION function...\n");
PushMsg(SCANCTRLFUNC, to_string(STARTDEBUGTEST), "1", iINT); printf("call STARTDEBUGTEST function...\n");
PushMsg(SCANCTRLFUNC, to_string(STOPDEBUGTEST), "1", iINT); printf("call STOPDEBUGTEST function...\n");
PushMsg(SCANCTRLFUNC, to_string(STARTHEATINGSCANNERTEST), "1", iINT); printf("call STARTHEATINGSCANNERTEST function...\n");
PushMsg(SCANCTRLFUNC, to_string(STOPHEATINGSCANNERTEST), "1", iINT); printf("call STOPHEATINGSCANNERTEST function...\n");
PushMsg(SCANCTRLFUNC, to_string(STARTGETSCANINFO), "1", iINT); printf("call STARTGETSCANINFO function...\n");
PushMsg(SCANCTRLFUNC, to_string(STOPGETSCANINFO), "1", iINT); printf("call STOPGETSCANINFO function...\n");
WriteData wd{ SCANCTRLFUNC,to_string(SETXYOFFSET) ,"1", iINT };
wd.items.emplace_back(Item{"x", to_string(1.23f),iFLOAT});
wd.items.emplace_back(Item{"y", to_string(2.23f),iFLOAT});
PushMsg(wd); printf("call SETXYOFFSET function...\n");
int count = (int)SCANCTRLFUNC::END1;
for (int i = 0; i < count; ++i) {
if (i == REMOVESCANNER) {
PushMsg(WRITETYPE::SCANCTRLFUNC, to_string(i), to_string(1),iINT);
}
else if (i == STOPHEATINGMOTION) {
PushMsg(WRITETYPE::SCANCTRLFUNC, to_string(i),to_string(0),iBOOL);
}
else {
PushMsg(WRITETYPE::SCANCTRLFUNC, to_string(i));
}
wd.nameKey = to_string(SETANGLE);
wd.items.emplace_back(Item{ "angle", to_string(1.2),iDOUBLE });
PushMsg(wd); printf("call SETANGLE function...\n");
PushMsg(SCANCTRLFUNC, to_string(UPDATESETTING), "1", iINT); printf("call UPDATESETTING function...\n");
wd.nameKey = to_string(UPDATESKYWRITING);
wd.items.emplace_back(Item{ "isList", to_string(true),iBOOL });
PushMsg(wd); printf("call UPDATESKYWRITING function...\n");
wd.nameKey = to_string(SETXYCORRECT);
wd.items.emplace_back(Item{ "x", to_string(2.3),iDOUBLE });
wd.items.emplace_back(Item{ "y", to_string(3.4),iDOUBLE });
PushMsg(wd); printf("call SETXYCORRECT function...\n");
wd.nameKey = to_string(SETK);
wd.items.emplace_back(Item{ "k", to_string(2.1),iDOUBLE });
PushMsg(wd); printf("call SETK function...\n");
printf("发送请求%d成功...\n", i);
Sleep(100);
}
}

View File

@ -36,7 +36,7 @@ enum MACHINEFUNC {
};
enum SCANCTRLFUNC {
enum ScanCtrlFunc {
BEGINWORK = 0,
PAUSEWORK,
PAUSEAUTO,
@ -47,6 +47,21 @@ enum SCANCTRLFUNC {
STARTHEATINGMOTION,
STOPHEATINGMOTION,
//以下是scanner函数
STARTDEBUGTEST,
STOPDEBUGTEST,
STARTHEATINGSCANNERTEST,
STOPHEATINGSCANNERTEST,
STARTGETSCANINFO,
STOPGETSCANINFO,
SETXYOFFSET,
SETANGLE,
UPDATESETTING,
UPDATESKYWRITING,
SETXYCORRECT,
SETK,
END1 //结束标记
};
@ -92,4 +107,7 @@ enum ConfigFunc {
REDTESTCFGSTART, //红光测试配置开始
REDTESTCFGSTOP, //红光测试配置结束
};
};
#define OUTPUTNAME(x) #x