시리우스2 라이브러리 v.1.10 이후 버전들은 다양한 레이저 소스에 대한 통신 및 제어를 지원합니다. 이를 사용하기 위해 레이저 소스 (ILaser) 객체를 생성하고 초기화 하는 과정을 아래와 같이 사용하게 됩니다. 데모 에디터 프로젝트에서는 아래와 같이 ini 파일에서 레이저 타입을 알려주는 문자열을 읽어 들여 생성 및 초기화를 하게 됩니다.
switch (laserType.Trim().ToLower())
{
case "virtual":
...
break;
case "advancedooptowaveaopico":
laser = LaserFactory.CreateAdvancedOptoWaveAOPico(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "advancedooptowaveaopicoprecision":
laser = LaserFactory.CreateAdvancedOptoWaveAOPicoPrecision(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "coherentavialx":
laser = LaserFactory.CreateCoherentAviaLX(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "coherentdiamondcseries":
laser = LaserFactory.CreateCoherentDiamondCSeries(index, $"LASER{index}", laserMaxPower);
break;
case "ipgylptyped":
laser = LaserFactory.CreateIPGYLPTypeD(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "ipgylptypee":
laser = LaserFactory.CreateIPGYLPTypeE(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "ipgylpulpn":
laser = LaserFactory.CreateIPGYLPULPN(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "ipgylpn":
laser = LaserFactory.CreateIPGYLPN(index, $"LASER{index}", laserComPort, laserMaxPower, rtcAnalogPort);
break;
case "jpttypee":
laser = LaserFactory.CreateJPTTypeE(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "photonicsindustrydx":
laser = LaserFactory.CreatePhotonicsIndustryDX(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "photonicsindustryrghaio":
laser = LaserFactory.CreatePhotonicsIndustryRGHAIO(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "spectraphysicshippo":
laser = LaserFactory.CreateSpectraPhysicsHippo(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "spectraphysicstalon":
laser = LaserFactory.CreateSpectraPhysicsTalon(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
case "spig4":
laser = LaserFactory.CreateSPIG4(index, $"LASER{index}", laserComPort, laserMaxPower);
break;
default:
throw new InvalidProgramException($"Not supported laser source type: {laserType}");
}
...
laser.Initialize();

레이저 소스 객체가 정상적으로 초기화되면, 아래와 같이 레이저(Laser) 탭에서 해당 레이저 소스의 상태 및 다양한 제어 동작이 가능합니다.

라이브러리 내에서 지원되는 특정 벤더의 레이저 소스 객체가 없다면, 사용자가 ILaser 인터페이스를 직접 상속 구현하여 확장도 가능합니다. 이 같은 활용법은 데모 프로젝트 (laserpower)에서 제공됩니다. 이 방식을 잘 활용하면 사용자가 원하는 형태의 레이저 소스 객체로의 확장 구현이 가능합니다.
시리우스2 라이브러리 v.1.11 이후 버전들은 다양한 파워메터의 사용이 가능합니다. 데모 에디터 프로젝트에서는 아래와 같이 ini 파일에서 파워메터 타입을 알려주는 문자열을 읽어 들여 이를 처리하고 있습니다.
switch (powerMeterType.Trim().ToLower())
{
case "virtual":
powerMeter = PowerMeterFactory.CreateVirtual(index, laser.MaxPowerWatt);
break;
case "ophirphotonics":
powerMeter = PowerMeterFactory.CreateOphirPhotonics(index, powerMeterSerialNo);
break;
case "coherentpowermax":
powerMeter = PowerMeterFactory.CreateCoherentPowerMax(index, powerMeterSerialPort);
break;
case "thorolabs":
powerMeter = PowerMeterFactory.CreateThorlabs(index, powerMeterSerialNo);
break;
default:
throw new InvalidProgramException($"Not supported powermeter type: {powerMeterType}");
}
...
powerMeter.Initialize();
가상의 파워메터(Virtual) 를 생성하여 사용하는 경우를 예를 들어보겠습니다. 아래와 같이 파워메터(PowerMeter) 탭에서 파워 측정을 시작한 모습입니다. Virtual 파워메터의 경우 테스트를 위해 자동으로 랜덤한 계측값이 취득 됩니다. 또한 이 값을 시간의 흐름에 따라 차트에 표시하게 됩니다.

또한 수동(Manual) 탭 화면에서는 레이저 소스의 출력값(W) 을 아래와 같이 슬라이더 이동을 통해 손쉽게 지정 가능합니다. 만약 파워메터를 이용해 측정중 이라면 지령된 출력 파워(W) 와 실제 측정된 파워(W) 값을 손쉽게 취득할 수 있습니다.

(참고) 특정 벤더의 파워메터를 사용하기 위해선 업체별로 제공되는 소프트웨어 설치가 선행되어야 합니다. (예: Ophir Optonics 경우 StarLab 설치)