using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
|
namespace SHARP_CLAS_UI
|
{
|
public class Power_Meter : Serial_Module
|
{
|
#region Field
|
Equipment _equip;
|
|
string com_port;
|
|
#endregion
|
|
#region Construct
|
public Power_Meter(Equipment _equip, string com_port = "COM3") :
|
base(com_port, 9600, 8)
|
{
|
this._equip = _equip;
|
this.com_port = com_port;
|
}
|
#endregion
|
|
#region Function
|
public new string SendWaitData(string send_data)
|
{
|
byte[] recv_datas = base.SendWaitData(send_data + "\r\n");
|
|
if (recv_datas == null)
|
{
|
return string.Empty;
|
}
|
|
string str_data = Encoding.ASCII.GetString(recv_datas);
|
|
str_data = str_data.Replace("\r\n", "");
|
|
return str_data;
|
}
|
|
public double Read_Power()
|
{
|
try
|
{
|
string str_data = SendWaitData("READ?");
|
|
if (str_data == string.Empty) return 0;
|
|
string[] power_data = str_data.Split(',');
|
|
if (power_data.Count() != 5) return 0;
|
|
double power = double.Parse(power_data[0]);
|
double x_position = double.Parse(power_data[1]);
|
double y_position = double.Parse(power_data[2]);
|
char flag = power_data[3][0];
|
int timestamp = int.Parse(power_data[4]);
|
|
if (flag == 'R')
|
{
|
//Over Range Error
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0931_POWER_METER_OVER_RANGE_ERROR);
|
}
|
else if (flag == 'T')
|
{
|
//Over Temperature Error
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0932_POWER_METER_OVER_TEMPERATURE_ERROR);
|
}
|
|
return power;
|
}
|
catch(Exception e)
|
{
|
_equip.Write_Exception_Log(e.Message);
|
return 0;
|
}
|
}
|
|
public bool Check_Power_Meter_Status()
|
{
|
string Status = SendWaitData("SYSTem:STATus?");
|
|
if (Status == string.Empty) return false;
|
|
if (Status == "T")
|
{
|
//Damage Temperature is exceeded
|
Alarm_Manager.Instance.Occurred(En_Alarm_List.AL_0933_POWER_METER_DAMAGED_TEMPERATURE_IS_EXCEEDED);
|
return false;
|
}
|
else
|
{
|
return true;
|
}
|
}
|
|
public void Set_Measurement_Mode_W()
|
{
|
SendWaitData("CONFigure:MEASure W");
|
}
|
|
public bool Check_Measurement_Mode_W()
|
{
|
string Mode = SendWaitData("CONFigure:MEASure?");
|
|
if (Mode == string.Empty) return false;
|
|
if (Mode == "W")
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
public void Set_Zero()
|
{
|
SendWaitData("CONFIqure:ZERO");
|
}
|
#endregion
|
}
|
|
public class Power_Meter_Data
|
{
|
public double Power;
|
public double X_Position;
|
public double Y_Position;
|
public char Flag;
|
public int Timestamp;
|
}
|
}
|