GrpcPrint/PrintS/ScannerCtrl/ScannerCtrl.h

157 lines
3.7 KiB
C
Raw Normal View History

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();
2024-05-15 17:59:04 +08:00
2024-03-26 10:33:00 +08:00
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
};