using System.Collections.Generic; namespace AuroraLaser.Coherent { public enum eLaserCoherentModel { //None, CompactMini, // etc } // Compact 시리즈를 Coherent 제조사로 묶을 수 있을까? interface ILaserCompact { #region Common double LaserTargetPower { get; set; } bool NeedConfigSave { get; set; } #endregion #region 통신 상태 int Connect(LaserCompactMiniConfig conn); int Disconnect(); int Reconnect(); bool IsConnected(); bool IsNetworkError { get; } #endregion #region 레이저 관련, 통신 R/W API 포함 bool IsLaserError { get; } void ErrorReset(); bool SetOutputPower(double powerPerc); // [0, 1000] #region Power calibration void LoadLaserCalibrationData(); List<(double perc, double watt)> GetPowerCalData(); double Watt2Power(double watt); double Watt2Power(double watt, eModelType calibType); double Power2Watt(double powerPerc); // For Simul Only void SetLaserPowerCalibMethod(string powerCalibMethod); string GetLaserPowerCalibMethod(); #endregion //---- Compact 시리즈에 공통으로 쓰일 수 있을까? 공통 불가이면, 개별 장치 기능으로 분리 검토 STRUCT_LASER_MODE_REGISTER GetLaserModeInfo(); STRUCT_STATUS_REGISTER GetLaserStatusInfo(); STRUCT_ERROR_REGISTER GetLaserErrMsgInfo(); //====================================================== void Update(); // 모니터링 & 주기적 업데이트 #endregion } public class LaserEvent { // 대문자로만 하니 가독성이 떨어짐 (띄우쓰기를 하면 길이가 길어지고) public const string EVENT_ID_SerialNumberUpdate = "EVENT_ID_SerialNumberUpdate"; } }