#pragma once #include "Scanner.h" class RTC5Scanner : public Scanner { public: RTC5Scanner(ScannerControlCfg* cfg); ~RTC5Scanner(); bool Init(); bool StopWork(); static bool PreInit(unsigned int &card_count); static void Uninit(); void SetK(double k) { if (!m_CorrectParamCfg->m_IsCorrectFile3D) { m_kfactor = k; m_xfactor = m_kfactor*m_CorrectParamCfg->m_xcorrect; m_yfactor = m_kfactor*m_CorrectParamCfg->m_ycorrect; m_XOffsetAssist = m_CorrectParamCfg->m_xposfix *m_xfactor; m_YOffsetAssist = m_CorrectParamCfg->m_yposfix *m_yfactor; } } void UpdateScanParamByCfg(ScanParamCfg* cfg); protected: void HeatingScannerRun(); void ScannerInfoRun(); void UpdateScannerInfo(); void CheckAlarm(); private: void LoadList(unsigned int listid, bool wait); void EndList(); void ListExecute(unsigned int listid, bool wait); void AutoChangeList(); void WaitListFree(); void SetScanSpeed(double value); void SetPower(double watt); void SetDefocus(float value); void ResetDefocus(); void AddVector(double startx, double starty, double endx, double endy); void ListNop(); void JumpAbs(double x, double y); void MarkAbs(double x, double y); unsigned int GetMemorySize() { return m_list_memory; } void ScanDebug(); void UpdateSetting(); void SetXyOffset(float x, float y); void SetAngle(double angle); void UpdateSkyWriting(bool islist); void GetInfo(vector &ins); void SetSkyWritingEnable(bool benable, bool islist); void ScanTestProc(); private: const uint32_t ScanStatusAddr = 0x0500; const uint32_t ActualPositionAddr = 0x0501; const uint32_t SetPositionAddr = 0x0502; const uint32_t PositionErrorAddr = 0x0503; const uint32_t ActualCurrentAddr = 0x0504; const uint32_t ActualVelocityAddr = 0x0506; const uint32_t GalvanometerScannerTempAddr = 0x0514; const uint32_t ServoBoardTempAddr = 0x0515; const uint32_t PDSupplyVoltageAddr = 0x0516; const uint32_t DSPCoreSupplyVoltageAddr = 0x0517; const uint32_t DSPIOVoltageAddr = 0x0518; const uint32_t AnalogSectionVoltageAddr = 0x0519; const uint32_t ADConverterSupplyVoltageAddr = 0x051A; const uint32_t PDSupplyCurrentAddr = 0x051B; const uint32_t FirmwareVersionAddr = 0x0522; const uint32_t CurrentOperationStateLowAddr = 0x0528; const uint32_t CurrentOperationStateHighAddr = 0x0529; const uint32_t StopEventCode = 0x052A; };