243 lines
6.7 KiB
C#
243 lines
6.7 KiB
C#
using Aurora.Api;
|
|
using Aurora.Api.Devices;
|
|
using Hermes;
|
|
using System.Linq;
|
|
|
|
namespace AuroraLaser.Coherent
|
|
{
|
|
public enum eCoherentIRLaser
|
|
{
|
|
RapidLX
|
|
}
|
|
|
|
// IR
|
|
public class LaserRapidLX : Device
|
|
{
|
|
LaserRapidLXTcp _LaserRapidLX;
|
|
|
|
public int Trigger { get; private set; }
|
|
public bool State { get; private set; }
|
|
public int Burst { get; private set; }
|
|
public int RepRate { get; private set; }
|
|
public double Power { get; private set; }
|
|
public double MonitorPower { get; private set; }
|
|
public double MonitorSeed { get; private set; }
|
|
public string Fault { get; private set; }
|
|
public string Serial { get; private set; }
|
|
public string FirmVer { get; private set; }
|
|
public string Model { get; private set; }
|
|
public string Status { get; private set; }
|
|
public string Warning { get; private set; }
|
|
|
|
public double Flow { get; private set; }
|
|
public double Temp { get; private set; }
|
|
|
|
public double SeederTime { get; private set; }
|
|
public double HeadTime { get; private set; }
|
|
|
|
public LaserRapidLX(string deviceId, bool isSimul)
|
|
{
|
|
IsSimul = isSimul;
|
|
_LaserRapidLX = new LaserRapidLXTcp(deviceId, isSimul);
|
|
}
|
|
protected override int DoActivate(IDeviceConfig config)
|
|
{
|
|
if (IsSimul) {
|
|
return E1.OK;
|
|
}
|
|
|
|
return _LaserRapidLX.OnInit(config.ConnConfig as SocketConnConfig);
|
|
}
|
|
|
|
protected override int DoDeactivate()
|
|
{
|
|
return _LaserRapidLX.OnClose();
|
|
}
|
|
|
|
public bool IsConnected()
|
|
{
|
|
if (!IsActivated) {
|
|
return false;
|
|
}
|
|
|
|
IsCommError = _LaserRapidLX._IsCommError;
|
|
if (IsCommError) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public int SetAlarmReset()
|
|
{
|
|
if (!IsActivated) {
|
|
return E2.NOT_CONNECTED;
|
|
}
|
|
|
|
if (IsSimul) {
|
|
return E1.OK;
|
|
}
|
|
|
|
return _LaserRapidLX.SetAlarmReset();
|
|
}
|
|
|
|
public int SetEmission(bool bEmission)
|
|
{
|
|
if (!IsActivated) {
|
|
return E2.NOT_CONNECTED;
|
|
}
|
|
|
|
if (IsSimul) {
|
|
State = bEmission;
|
|
return E1.OK;
|
|
}
|
|
|
|
return _LaserRapidLX.SetEmission(bEmission);
|
|
}
|
|
|
|
public int SetPower(double dPower)
|
|
{
|
|
if (!IsActivated) {
|
|
return E2.NOT_CONNECTED;
|
|
}
|
|
|
|
if (IsSimul) {
|
|
Power = dPower;
|
|
return E1.OK;
|
|
}
|
|
|
|
return _LaserRapidLX.SetPower(dPower);
|
|
}
|
|
|
|
public int SetRepRate(int iRepRate)
|
|
{
|
|
if (!IsActivated) {
|
|
return E2.NOT_CONNECTED;
|
|
}
|
|
|
|
if (IsSimul) {
|
|
RepRate = iRepRate;
|
|
return E1.OK;
|
|
}
|
|
|
|
return _LaserRapidLX.SetRepRate(iRepRate);
|
|
}
|
|
|
|
public int SetBurst(int iBurst)
|
|
{
|
|
if (!IsActivated) {
|
|
return E2.NOT_CONNECTED;
|
|
}
|
|
|
|
if (IsSimul) {
|
|
Burst = iBurst;
|
|
return E1.OK;
|
|
}
|
|
|
|
return _LaserRapidLX.SetBurst(iBurst);
|
|
}
|
|
|
|
public int SetTrigger(int iTrigger)
|
|
{
|
|
if (!IsActivated) {
|
|
return E2.NOT_CONNECTED;
|
|
}
|
|
|
|
if (IsSimul) {
|
|
Trigger = iTrigger;
|
|
return E1.OK;
|
|
}
|
|
|
|
return _LaserRapidLX.SetTrigger(iTrigger);
|
|
}
|
|
|
|
public void UpdateStatus()
|
|
{
|
|
if (!IsActivated) {
|
|
return;
|
|
}
|
|
|
|
var status = _LaserRapidLX.GetStatus();
|
|
if (status == null) {
|
|
return;
|
|
}
|
|
|
|
int iValue;
|
|
double dValue;
|
|
|
|
var strList = status.Split('r');
|
|
for (int i = 0; i < strList.Count(); i++) {
|
|
var splited = strList[i].Split('=');
|
|
if (splited.Count() < 2) {
|
|
continue;
|
|
}
|
|
|
|
var command = splited[0];
|
|
var strValue = splited[1];
|
|
if (strValue.Length > 20) {
|
|
return;
|
|
}
|
|
|
|
switch (command) {
|
|
case "\nBURST":
|
|
if (int.TryParse(strValue, out iValue)) {
|
|
Burst = iValue;
|
|
}
|
|
break;
|
|
case "\nF":
|
|
Fault = strValue;
|
|
break;
|
|
case "\nW":
|
|
Warning = strValue;
|
|
break;
|
|
case "\nWF":
|
|
if (double.TryParse(strValue, out dValue)) {
|
|
Temp = dValue;
|
|
}
|
|
break;
|
|
case "\nSH":
|
|
if (double.TryParse(strValue, out dValue)) {
|
|
SeederTime = dValue;
|
|
}
|
|
break;
|
|
case "\nHH":
|
|
if (double.TryParse(strValue, out dValue)) {
|
|
HeadTime = dValue;
|
|
}
|
|
break;
|
|
case "\nRL":
|
|
if (double.TryParse(strValue, out dValue)) {
|
|
Power = dValue;
|
|
}
|
|
break;
|
|
case "\nPD4P":
|
|
if (double.TryParse(strValue, out dValue)) {
|
|
MonitorSeed = dValue;
|
|
}
|
|
break;
|
|
case "\nPOUT":
|
|
if (double.TryParse(strValue, out dValue)) {
|
|
MonitorPower = dValue;
|
|
}
|
|
break;
|
|
case "\nRRAMPSET":
|
|
if (int.TryParse(strValue, out iValue)) {
|
|
RepRate = iValue;
|
|
}
|
|
break;
|
|
case "\nPM":
|
|
if (int.TryParse(strValue, out iValue)) {
|
|
Trigger = iValue;
|
|
}
|
|
break;
|
|
case "\nSTATE":
|
|
if (int.TryParse(strValue, out iValue)) {
|
|
State = iValue == 1;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
} |