using Common.Attributes;
using DeviceCommand.Base;
using System;
using System.IO.Ports;
using System.Threading;
using System.Threading.Tasks;
namespace DeviceCommand.Device
{
[BOBCommand]
public class IT6724C : Serial_Port
{
public IT6724C(string COMPort, int BaudRate, int DataBits, StopBits stopBits, Parity parity, int ReadTimeout, int ReceiveTimeout)
{
ConfigureDevice(COMPort, BaudRate, DataBits, stopBits, parity, ReadTimeout, ReceiveTimeout);
}
public IT6724C() { }
#region 设置命令
///
/// 设置电源输出状态,true 为开,false 为关
///
public virtual async Task 设置电源输出(bool 开关, CancellationToken ct = default)
=>await SendAsync($"OUTPut {(开关 ? 1 : 0)}\r\n", ct);
///
/// 切换到远程控制模式
///
public virtual async Task 设置为远程模式(CancellationToken ct = default)
=>await SendAsync("SYSTem:REMote\r\n", ct);
///
/// 蜂鸣器测试
///
public virtual async Task 蜂鸣器测试(CancellationToken ct = default)
=>await SendAsync("SYSTem:BEEPer\r\n", ct);
///
/// 设置输出电流(单位:A)
///
public virtual async Task 设置电流(double 电流, CancellationToken ct = default)
=>await SendAsync($"CURRent {电流}\r\n", ct);
///
/// 设置过流保护电流(OCP,单位:A)
///
public virtual async Task 设置电流保护OCP电流(double 电流, CancellationToken ct = default)
=>await SendAsync($"CURRent:PROTection {电流}\r\n", ct);
///
/// 设置过流保护状态,true 为启用,false 为禁用
///
public virtual async Task 设置OCP开关(bool 开关, CancellationToken ct = default)
=>await SendAsync($"CURRent:PROTection:STATe {(开关 ? 1 : 0)}\r\n", ct);
///
/// 清除过流保护触发状态
///
public virtual async Task 清除电流保护(CancellationToken ct = default)
=>await SendAsync("CURRent:PROTection:CLEar\r\n", ct);
///
/// 设置输出电压(单位:V)
///
public virtual async Task 设置电压(double 电压, CancellationToken ct = default)
=>await SendAsync($"VOLTage {电压}\r\n", ct);
///
/// 设置过压保护电压(OVP,单位:V)
///
public virtual async Task 设置电压保护OVP电压(double 电压, CancellationToken ct = default)
=>await SendAsync($"VOLT:PROTection {电压}\r\n", ct);
///
/// 设置过压保护状态,true 为启用,false 为禁用
///
public virtual async Task 设置OVP开关(bool 开关, CancellationToken ct = default)
=>await SendAsync($"VOLT:PROTection:STATe {(开关 ? 1 : 0)}\r\n", ct);
///
/// 清除过压保护触发状态
///
public virtual async Task 清除电压保护(CancellationToken ct = default)
=> await SendAsync("VOLT:PROTection:CLEar\r\n", ct);
///
/// 发送自定义命令
///
public virtual async Task 发送自定义命令(string 指令, CancellationToken ct = default)
=>await SendAsync($"{指令}\r\n", ct);
#endregion
#region 查询命令
///
/// 查询仪器标识,返回制造商、型号、序列号、固件版本
///
public virtual async Task 查询设备信息(CancellationToken ct = default)
{
await SendAsync("*IDN?\r\n", ct);
return await ReadAsync(ct: ct);
}
///
/// 查询过流保护是否触发,返回 true 表示触发
///
public virtual async Task 查询电流保护状态(CancellationToken ct = default)
{
await SendAsync("CURRent:PROTection:TRIPed?\r\n", ct);
var result = await ReadAsync(ct: ct);
return result == "1";
}
///
/// 查询过压保护是否触发,返回 true 表示触发
///
public virtual async Task 查询电压保护状态(CancellationToken ct = default)
{
await SendAsync("VOLT:PROTection:TRIPed?\r\n", ct);
var result = await ReadAsync(ct: ct);
return result == "1";
}
///
/// 查询实际输出电流(单位:A)
///
public virtual async Task 查询实时电流(CancellationToken ct = default)
{
await SendAsync("MEASure:CURRent?\r\n", ct);
var result = await ReadAsync(ct: ct);
return Convert.ToDouble(result);
}
///
/// 查询实际输出电压(单位:V)
///
public virtual async Task 查询实时电压(CancellationToken ct = default)
{
await SendAsync("MEASure:VOLTage?\r\n", ct);
var result = await ReadAsync(ct: ct);
return Convert.ToDouble(result);
}
///
/// 查询实际输出功率(单位:W)
///
public virtual async Task 查询实时功率(CancellationToken ct = default)
{
await SendAsync("MEASure:POWer?\r\n", ct);
var result = await ReadAsync(ct: ct);
return Convert.ToDouble(result);
}
#endregion
}
}