using HslCommunication;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_QuartzJob.DeviceBase;
using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.StackerCrane;
namespace WIDESEAWCS_QuartzJob
{
public interface ICommonRGV: IDevice
{
///
/// 堆垛机通讯对象
///
BaseCommunicator Communicator { get; }
///
/// 堆垛机协议信息
///
List DeviceProDTOs { get; }
///
/// 堆垛机协议明细信息
///
List DeviceProtocolDetailDTOs { get; }
///
/// 上一次执行的任务
///
int LastTaskNum { get; }
///
/// 当前正在执行的任务
///
int CurrentTaskNum { get; }
///
/// 上一次任务类型
///
int? LastTaskType { get; set; }
///
/// 与设备的心跳
///
void Heartbeat();
///
/// 发送任务命令
///
/// 任务命令
///
bool SendCommand(T command) where T : IDataTransfer, new();
///
/// 堆垛机任务完成事件
///
event EventHandler StackerCraneTaskCompletedEventHandler;
///
/// 读取PLC协议地址的数据
///
/// 协议信息的枚举对象信息。
/// 读取数据的类型对象信息。
/// 枚举值
/// 读取到的数据
TRsult GetValue(TEnum value) where TEnum : Enum;
///
/// 根据参数名称写入堆垛机对应的数据。
///
/// 参数名称枚举类型。
/// 要写入的数据类型。
/// 参数名称。
/// 要写入的数据。
/// 返回写入成功或失败
///
bool SetValue(TEnum @enum, TValue value) where TEnum : Enum where TValue : notnull;
}
}