using Aitex.Core.RT.Device;
using Aitex.Core.RT.Log;
using Aitex.Core.RT.OperationCenter;
using MECF.Framework.Common.Device.BarcodeReader;
using MECF.Framework.Common.Device.ResistivityProbe;
using MECF.Framework.Common.Equipment;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CyberX8_RT.Devices.BarcodeReader
{
    public class BarcodeReaderController : BaseDevice, IDevice
    {
        #region 常量 
        #endregion
        #region 内部变量
        #endregion
        #region 属性
        /// 
        ///条形码值
        /// 
        public string BarcodeValue { get { return ReadBarcodeValue(); } }
        #endregion
        /// 
        /// 构造函数
        /// 
        /// 
        public BarcodeReaderController(string moduleName) : base(moduleName, moduleName, moduleName, moduleName)
        {
            InitialData();
        }
        /// 
        /// 初始化
        /// 
        /// 
        public bool Initialize()
        {
            InitializeOperation();
            InitializeDevice();
            return true;
        }
        /// 
        /// 获取数值
        /// 
        /// 
        private string ReadBarcodeValue()
        {
            return BarcodeReaderConfigManager.Instance.GetBarcodeValueByName(Module.ToString());
        }
        /// 
        /// 初始化数据
        /// 
        private void InitialData()
        {
        }
        /// 
        /// 初始化操作
        /// 
        public bool InitializeDevice()
        {
            BarcodeReaderConfigManager.Instance.InitialDevice(Module.ToString());
            return true;
        }
        /// 
        /// 初始化操作
        /// 
        private void InitializeOperation()
        {
            OP.Subscribe($"{Module}.ReadBarcode", ReadBarcodeOperation);
            OP.Subscribe($"{Module}.InitializeBarcode", InitializeBarcodeOperation);
        }
        public void Monitor()
        {
        }
        public void Reset()
        {
        }
        public void Terminate()
        {
        }
        public bool ReadBarcodeOperation(string cmd, object[] args)
        {
            BarcodeReaderConfigManager.Instance.ReadbarcodeOnce(Module.ToString());
            return true;
        }
        /// 
        /// 读取条码
        /// 
        /// 
        public string ReadBarcode()
        {
            return BarcodeReaderConfigManager.Instance.ReadbarcodeOnce(Module.ToString());
        }
        public bool InitializeBarcodeOperation(string cmd, object[] args)
        {
            bool result = BarcodeReaderConfigManager.Instance.GetDeviceConnect(Module.ToString());
            return result;
        }
    }
}