2024-03-26 10:33:00 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
#include "../stdafx.h"
|
|
|
|
|
#include "BaseCtrl.h"
|
|
|
|
|
#include "../Purifier/BasePurifier.h"
|
|
|
|
|
#include "Scanner.h"
|
|
|
|
|
#include "../Machine/Machine.h"
|
|
|
|
|
#include "../PLC/MachineCtrl.h"
|
2024-04-07 17:09:01 +08:00
|
|
|
|
#include "../camera/HBDCamera.h"
|
2024-03-26 10:33:00 +08:00
|
|
|
|
//#include "../RecoatCheck/RecoatCheck.h"
|
|
|
|
|
#include "../Communication/ServoManager.h"
|
|
|
|
|
#include "ScannerPair.h"
|
|
|
|
|
#include "../Communication/ScannerPowerClient.h"
|
|
|
|
|
|
2024-05-09 12:49:18 +08:00
|
|
|
|
enum FUNCNAME {
|
|
|
|
|
BEGINWORK = 0,
|
|
|
|
|
PAUSEWORK,
|
|
|
|
|
PAUSEAUTO,
|
|
|
|
|
STOPWORK,
|
|
|
|
|
STOPREDTEST,
|
|
|
|
|
TESTLAYER,
|
|
|
|
|
REMOVESCANNER,
|
|
|
|
|
STARTHEATINGMOTION,
|
|
|
|
|
STOPHEATINGMOTION,
|
2024-05-15 13:38:34 +08:00
|
|
|
|
|
|
|
|
|
STARTDEBUGTEST, //scanner函数
|
|
|
|
|
STOPDEBUGTEST,
|
|
|
|
|
STARTHEATINGSCANNERTEST,
|
|
|
|
|
STOPHEATINGSCANNERTEST,
|
|
|
|
|
STARTGETSCANINFO,
|
|
|
|
|
STOPGETSCANINFO,
|
2024-05-09 12:49:18 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2024-03-26 10:33:00 +08:00
|
|
|
|
class RemoteClient;
|
|
|
|
|
class ScannerCtrl : public BaseCtrl
|
|
|
|
|
{
|
|
|
|
|
typedef ScannerCtrl thisClass;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
ScannerCtrl();
|
|
|
|
|
~ScannerCtrl();
|
|
|
|
|
bool Init();
|
|
|
|
|
|
|
|
|
|
bool BeginWork();
|
|
|
|
|
bool PauseWork();
|
|
|
|
|
void PauseAuto();
|
|
|
|
|
bool StopWork();
|
|
|
|
|
|
2024-05-15 13:38:34 +08:00
|
|
|
|
bool IsTestLayerEnable();
|
2024-03-26 10:33:00 +08:00
|
|
|
|
void StopRedTest();
|
|
|
|
|
void TestLayer();
|
2024-05-15 13:38:34 +08:00
|
|
|
|
vector<Scanner*>* GetScanners() { return &m_scan; } //待处理
|
2024-03-26 10:33:00 +08:00
|
|
|
|
JobController* GetJobController() { return m_job_controller; }
|
|
|
|
|
void RemoveScanner(int seq);
|
|
|
|
|
|
|
|
|
|
void SetPurifierClient(BasePurifier* purifierClient) {
|
|
|
|
|
m_PurifierClient = purifierClient;
|
|
|
|
|
}
|
|
|
|
|
void SetScannerPowerClient(ScannerPowerClient* spc) { m_ScannerPowerClient = spc; }
|
2024-05-15 13:38:34 +08:00
|
|
|
|
//void GetInitErrorInfos(vector<string>& vec);
|
2024-04-08 13:43:56 +08:00
|
|
|
|
string GetInitErrorInfos();
|
2024-05-15 13:38:34 +08:00
|
|
|
|
bool HasInitError() { return !m_InitErrorInfos.empty(); } //不需要传客户端,先请求一次GetInitErrorInfos
|
2024-03-26 10:33:00 +08:00
|
|
|
|
void ModelScan(void);
|
|
|
|
|
void StopModelScan(void);
|
|
|
|
|
|
|
|
|
|
void SetMachineCtrl(MachineCtrl* machineCtrl) {
|
|
|
|
|
m_MachineCtrl = machineCtrl;
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-15 13:38:34 +08:00
|
|
|
|
bool IsHeatingScannerEnable(); //在客户端判断,不传客户端
|
2024-03-26 10:33:00 +08:00
|
|
|
|
|
2024-04-07 17:09:01 +08:00
|
|
|
|
void SetCamera(HBDCamera* camera) { m_Camera = camera; }
|
2024-03-26 10:33:00 +08:00
|
|
|
|
//void SetRecoatCheck(RecoatCheck* rc) { m_RecoatCheck = rc; }
|
|
|
|
|
void SetServoManager(ServoManager* servoManager) { m_ServoManager = servoManager; }
|
|
|
|
|
|
|
|
|
|
void StartHeatingMotion();
|
|
|
|
|
void StopHeatingMotion(bool iswait);
|
|
|
|
|
|
|
|
|
|
void SetRemoteClient(RemoteClient* rc) { m_RemoteClient = rc; }
|
2024-05-09 12:49:18 +08:00
|
|
|
|
|
|
|
|
|
void CallFunc(const ReadData& rd);
|
2024-05-15 13:38:34 +08:00
|
|
|
|
|
|
|
|
|
void SendToClients();
|
2024-03-26 10:33:00 +08:00
|
|
|
|
private:
|
|
|
|
|
static DWORD WINAPI PrintProc(thisClass* _this);
|
|
|
|
|
static DWORD WINAPI RedPrintTestProc(thisClass* _this);
|
|
|
|
|
static DWORD WINAPI ModelScanProc(thisClass* _this);
|
|
|
|
|
static DWORD WINAPI ReleasePressureProc(thisClass* _this);
|
|
|
|
|
|
|
|
|
|
static DWORD WINAPI HeatingMotionProc(ScannerCtrl* _this);
|
|
|
|
|
void HeatingMotionRun();
|
|
|
|
|
|
|
|
|
|
void PrintRun();
|
|
|
|
|
bool ReadyPrint(bool startAfterPause);
|
|
|
|
|
|
|
|
|
|
void CtrlWhenStop();
|
|
|
|
|
void CtrlIoWhenExit();
|
|
|
|
|
|
|
|
|
|
void DispatchDataBlock();
|
|
|
|
|
|
|
|
|
|
void DispatchTestDataBlock();
|
|
|
|
|
void DispatchModelDataBlock(int partId, string scanType, float power, float speed);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
string m_PauseMsg;
|
|
|
|
|
string m_StopMsg;
|
|
|
|
|
|
|
|
|
|
vector<AlarmCfg*> m_StopAlarms;
|
|
|
|
|
vector<AlarmCfg*> m_PauseAlarms;
|
|
|
|
|
private:
|
|
|
|
|
vector<Scanner*> m_scan;
|
|
|
|
|
|
|
|
|
|
HANDLE m_print_thread;
|
|
|
|
|
HANDLE m_RedPrintTestThread;
|
|
|
|
|
|
|
|
|
|
CRITICAL_SECTION m_LayerTestCs;
|
|
|
|
|
BasePurifier* m_PurifierClient;
|
|
|
|
|
RunCfg* m_RunCfg;
|
|
|
|
|
MachineCfg* m_MachineCfg;
|
|
|
|
|
Machine* m_Machine;
|
|
|
|
|
IOCfgWrapper* m_IOCfgWrapper;
|
|
|
|
|
CoverCfg* m_CoverCfg;
|
|
|
|
|
PowderEstimateCfg* m_PowderEstimateCfg;
|
|
|
|
|
ExtCfg* m_ExtCfg;
|
|
|
|
|
ServoManager* m_ServoManager;
|
|
|
|
|
MachineCtrl* m_MachineCtrl;
|
|
|
|
|
AlarmCfgWrapper* m_AlarmCfgWrapper;
|
|
|
|
|
HANDLE m_PressureThread;
|
|
|
|
|
bool m_PressureCtrlFlag;
|
|
|
|
|
|
|
|
|
|
unsigned int m_DownSkinStopFlag;
|
|
|
|
|
bool m_IsDownSkinContinue;
|
|
|
|
|
|
2024-04-07 17:09:01 +08:00
|
|
|
|
HBDCamera* m_Camera;
|
2024-03-26 10:33:00 +08:00
|
|
|
|
//RecoatCheck* m_RecoatCheck;
|
|
|
|
|
RecoatCheckCfg* m_RecoatCheckCfg;
|
|
|
|
|
|
|
|
|
|
ScannerPowerClient* m_ScannerPowerClient;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HANDLE m_HeatingMotionThread;
|
|
|
|
|
bool m_HeatingMotionFlag;
|
|
|
|
|
|
|
|
|
|
RemoteClient* m_RemoteClient;
|
|
|
|
|
|
|
|
|
|
bool m_ShowFinishReport;
|
|
|
|
|
time_t m_LastSendFinishReportTime;
|
|
|
|
|
|
|
|
|
|
vector<BPBinary::BinDataBlock*> m_RedTestDBS;
|
|
|
|
|
vector<BPBinary::BinDataBlock*> m_ModeTestDBS;
|
2024-05-15 13:38:34 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::shared_mutex m_mtx;
|
2024-03-26 10:33:00 +08:00
|
|
|
|
|
|
|
|
|
};
|