huangxiaoqiang
昨天 2d9272bdcdbdbca81396a61493e4ef6a822dcf4a
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/RGV/ICommonRGV.cs
@@ -1,13 +1,83 @@
using System;
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.RGV
namespace WIDESEAWCS_QuartzJob
{
    public interface ICommonRGV: IDevice
    {
        /// <summary>
        /// å †åž›æœºé€šè®¯å¯¹è±¡
        /// </summary>
        BaseCommunicator Communicator { get; }
        /// <summary>
        /// å †åž›æœºåè®®ä¿¡æ¯
        /// </summary>
        List<DeviceProDTO> DeviceProDTOs { get; }
        /// <summary>
        /// å †åž›æœºåè®®æ˜Žç»†ä¿¡æ¯
        /// </summary>
        List<DeviceProtocolDetailDTO> DeviceProtocolDetailDTOs { get; }
        /// <summary>
        /// ä¸Šä¸€æ¬¡æ‰§è¡Œçš„任务
        /// </summary>
        int LastTaskNum { get; }
        /// <summary>
        /// å½“前正在执行的任务
        /// </summary>
        int CurrentTaskNum { get; }
        /// <summary>
        /// ä¸Šä¸€æ¬¡ä»»åŠ¡ç±»åž‹
        /// </summary>
        int? LastTaskType { get; set; }
        /// <summary>
        /// ä¸Žè®¾å¤‡çš„心跳
        /// </summary>
        void Heartbeat();
        /// <summary>
        /// å‘送任务命令
        /// </summary>
        /// <param name="command">任务命令</param>
        /// <returns></returns>
        bool SendCommand<T>(T command) where T : IDataTransfer, new();
        /// <summary>
        /// å †åž›æœºä»»åŠ¡å®Œæˆäº‹ä»¶
        /// </summary>
        event EventHandler<StackerCraneTaskCompletedEventArgs> StackerCraneTaskCompletedEventHandler;
        /// <summary>
        /// è¯»å–PLC协议地址的数据
        /// </summary>
        /// <typeparam name="TEnum">协议信息的枚举对象信息。</typeparam>
        /// <typeparam name="TRsult">读取数据的类型对象信息。</typeparam>
        /// <param name="value">枚举值</param>
        /// <returns>读取到的数据</returns>
        TRsult GetValue<TEnum, TRsult>(TEnum value) where TEnum : Enum;
        /// <summary>
        /// æ ¹æ®å‚数名称写入堆垛机对应的数据。
        /// </summary>
        /// <typeparam name="TEnum">参数名称枚举类型。</typeparam>
        /// <typeparam name="TValue">要写入的数据类型。</typeparam>
        /// <param name="enum">参数名称。</param>
        /// <param name="value">要写入的数据。</param>
        /// <returns>返回写入成功或失败</returns>
        /// <exception cref="Exception"></exception>
        bool SetValue<TEnum, TValue>(TEnum @enum, TValue value) where TEnum : Enum where TValue : notnull;
    }
}