#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 命名空间:WIDESEAWCS_QuartzJob
 * 创建者:胡童庆
 * 创建时间:2024/8/2 16:13:36
 * 版本:V1.0.0
 * 描述:输送线接口层
 *
 * ----------------------------------------------------------------
 * 修改人:
 * 修改时间:
 * 版本:V1.0.1
 * 修改说明:
 * 
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
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;
namespace WIDESEAWCS_QuartzJob
{
    public interface IConveyorLine : IDevice
    {
        /// 
        /// 输送线通讯对象
        /// 
        BaseCommunicator Communicator { get; }
        /// 
        /// 输送线协议信息
        /// 
        List DeviceProDTOs { get; }
        /// 
        /// 输送线协议明细信息
        /// 
        List DeviceProtocolDetailDTOs { get; }
        /// 
        /// 与设备的心跳
        /// 
        void Heartbeat();
        /// 
        /// 读取PLC协议地址的数据
        /// 
        /// 协议信息的枚举对象信息。
        /// 读取数据的类型对象信息。
        /// 枚举值
        /// 设备子编号
        /// 读取到的数据
        TRsult GetValue(TEnum value, string deviceChildCode) where TEnum : Enum;
        /// 
        /// 根据参数名称、设备子编号写入对应的数据。
        /// 
        /// 参数名称枚举类型。
        /// 要写入的数据类型。
        /// 参数名称。
        /// 要写入的数据。
        /// 设备子编号写
        /// 返回写入成功或失败
        bool SetValue(TEnum @enum, TValue value, string deviceChildCode) where TEnum : Enum where TValue : notnull;
        /// 
        /// 读取站台是否被占用
        /// 
        /// 设备子编号
        /// 
        bool IsOccupied(string deviceChildCode);
        /// 
        /// 发送任务命令
        /// 
        /// 任务命令对象的类型泛型
        /// 任务命令
        /// 
        bool SendCommand(T command, string deviceChildCode) where T : IDataTransfer, new();
    }
}