tangxu
2022-10-26 fdddb786ac2cd2b1d89bab2932aedfec4d05e358
添加单位类型 重量
已重命名5个文件
已修改6个文件
299 ■■■■■ 文件已修改
Socket/IStation.DataDockingSocket4NT/HandleHelper.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Socket/IStation.DataDockingSocket4NT/helper/MsgDataHelper.cs 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Socket/IStation.DataDockingSocket4NT/instruction/SendInstructionJobHelper.cs 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Socket/IStation.DataDockingSocket4NT/paras/AppParas.cs 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Socket/IStation.DataDockingSocket4NT/paras/AppParasHelper.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Socket/IStation.DataDockingSocket4NT/paras_datadocking_socket_nt.json 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Untity/IStation.Unit/单位枚举/eUnitType.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Untity/IStation.Unit/电度_无功/UnitDegreeQHelper.cs 补丁 | 查看 | 原始文档 | blame | 历史
Untity/IStation.Unit/电度_无功/eUnitDegreeQ.cs 补丁 | 查看 | 原始文档 | blame | 历史
Untity/IStation.Unit/电度_有功/UnitDegreeHelper.cs 补丁 | 查看 | 原始文档 | blame | 历史
Untity/IStation.Unit/电度_有功/eUnitDegree.cs 补丁 | 查看 | 原始文档 | blame | 历史
Socket/IStation.DataDockingSocket4NT/HandleHelper.cs
@@ -33,16 +33,12 @@
            SessionHelper.Cache = session;
            var appParas = AppParasHelper.Get();
            if (appParas == null)
            {
                LogHelper.Error("Socket æ•°æ®å¯¹æŽ¥ä¸­ï¼ŒNT ç¼ºå°‘数据对接配置文件");
                return;
            }
            foreach (var item in appParas.InstructionItems)
            foreach (var item in MsgDataHelper.GetInstructionQuerys())
            {
                SendInstructionJobHelper.StartJob(session, item);
                Thread.Sleep(appParas.InstructionSendSpace * 1000);
                if(item.SpaceTime>0)
                Thread.Sleep(item.SpaceTime * 1000);
            }
            SendControlJobHelper.StartJob(session);
@@ -73,24 +69,19 @@
                return;
            if (bytes == null)
                return;
            var appParas = AppParasHelper.Get();
            if (appParas == null)
            {
                LogHelper.Error("Socket æ•°æ®å¯¹æŽ¥ä¸­ï¼ŒNT ç¼ºå°‘数据对接配置文件");
                return;
            }
            var receList = HandleDataHelper.HandleData(bytes);
            var receList = MsgDataHelper.HandleData(bytes);
            if (receList != null && receList.Count > 0)
            {
                receive(receList);
            }
            if (appParas.Src)
            if (MsgDataHelper.IsSrc())
            {
                SrcHelper.Src(bytes);
            }
            if (appParas.Debug)
            if (MsgDataHelper.IsDebug())
            {
                DebugHelper.Debug(receList);
            }
Socket/IStation.DataDockingSocket4NT/helper/MsgDataHelper.cs
ÎļþÃû´Ó Socket/IStation.DataDockingSocket4NT/helper/HandleDataHelper.cs ÐÞ¸Ä
@@ -12,8 +12,41 @@
    /// <summary>
    /// å¤„理数据辅助类
    /// </summary>
    internal class HandleDataHelper
    internal class MsgDataHelper
    {
        /// <summary>
        /// èŽ·å–
        /// </summary>
        /// <returns></returns>
        public static AppParas GetAppParas()
        {
            if (_appparas == null)
            {
                 var jsonFileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "paras_datadocking_socket_nt.json");
                var json = FileHelper.ReadAllText(jsonFileName);
                _appparas = JsonHelper.Json2Object<AppParas>(json);
            }
            return _appparas;
        }
        private static AppParas _appparas = null;
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static bool IsSrc()
        {
            return GetAppParas().Src;
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static bool IsDebug()
        {
            return GetAppParas().Debug;
        }
        /// <summary>
        /// å¤„理数据
        /// </summary>
@@ -29,7 +62,7 @@
            }
            //else if (byteMessage[2] == 0x46)
            //{
            //    return ReadMessage监控值(byteMessage);
            //    return ReadMessage状态值(byteMessage);
            //}
            else
            {
@@ -39,7 +72,20 @@
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal static IEnumerable<QueryInstructionItem> GetInstructionQuerys()
        {
            var appParas = GetAppParas();
            if (appParas == null)
            {
                LogHelper.Error("Socket æ•°æ®å¯¹æŽ¥ä¸­ï¼ŒNT ç¼ºå°‘数据对接配置文件");
                return null;
            }
            return appParas.InstructionQuerys;
        }
        /// <summary>
        /// èŽ·å–æŽ§åˆ¶æŒ‡ä»¤(调频)
        /// </summary>
@@ -68,12 +114,12 @@
        /// <summary>
        /// èŽ·å–æŸ¥è¯¢æŒ‡ä»¤(状态值)
        /// èŽ·å–æŸ¥è¯¢æŒ‡ä»¤(状态值):01-03-00-12-00-04-E4-0C
        /// </summary>
        /// <returns></returns>
        public static byte[] GetMonitorMsg状态值()
        {
            return new byte[] { 0x01, 0x03, 0x00, 0x19, 0x00, 0x23, 0xD5, 0xD4 };
            return new byte[] { 0x01, 0x03, 0x00, 0x12, 0x00, 0x04, 0xE4, 0x0C };
        }
@@ -340,8 +386,57 @@
            return list;
        }
        /// <summary>
        /// è¯»å–消息(状态值)
        /// </summary>
        /// <param name="byteMessage"></param>
        private static List<Model.MonitorDataDockingReceiveRecord> ReadMessage状态值(byte[] byteMessage)
        {
            var list = new List<Model.MonitorDataDockingReceiveRecord>();
            byte start = 0x12;
            if (byteMessage == null || byteMessage.Length < 8 )
            {
                return null;
            }
            try
            {
                //显示消息
                //string strMessage = BitConverter.ToString(byteMessage, 0, byteMessage.Length);
                //DisplayMessage(string.Format(" æ”¶åˆ°çš„æ¶ˆæ¯:  {0} ", strMessage));
                //DisplayMessage(string.Format(" è®¾å¤‡åœ°å€: {0} (0x{1})", byteMessage[0], Convert.ToString(byteMessage[0], 16)));
                //DisplayMessage(string.Format(" åŠŸèƒ½ç : {0} ", byteMessage[1]));
                string msg;
                var now = DateTime.Now;
                //液位量程
                //list.Add(new Model.MonitorDataDockingReceiveRecord()
                //{
                //    SysId =  ,
                //    RecordType = Model.eMonitorType.General,
                //    SrcTime = now,
                //    SrcValue = (GetInt2Byte(byteMessage, 3 + (19 - start), out msg )* 0.1).ToString()
                //});
                //设定频率
                list.Add(new Model.MonitorDataDockingReceiveRecord()
                {
                    SysId = 1584894751252025344,
                    RecordType = Model.eMonitorType.General,
                    SrcTime = now,
                    SrcValue = (GetInt2Byte(byteMessage, 3 + (20 - start), out msg) * 0.1).ToString()
                });
            }
            catch// (Exception err)
            {
                return null;
            }
            return list;
        }
        #region MyRegion
        private static int GetInt2Byte(byte[] byteMessage, int startPosition, out string info)
        {
@@ -424,6 +519,8 @@
            //return BitConverter.ToDouble(byteMessage, startPosition);
            return BitConverter.ToSingle(value.Reverse().ToArray(), 0);//采用了IEEE-754二进制浮点数算术标准
        }
        #endregion
    }
Socket/IStation.DataDockingSocket4NT/instruction/SendInstructionJobHelper.cs
@@ -18,7 +18,7 @@
        /// <summary>
        /// å¼€å§‹ä»»åŠ¡
        /// </summary>
        public static async void StartJob(Model.IMonitorDataDockingSession session, InstructionItem item)
        public static async void StartJob(Model.IMonitorDataDockingSession session, QueryInstructionItem item)
        {
            if (session == null)
                return;
@@ -26,14 +26,14 @@
                return;
            if (item == null)
                return;
            if (string.IsNullOrEmpty(item.Instruction))
            if (string.IsNullOrEmpty(item.Content))
                return;
            LogHelper.Info($"{session.SessionName} å¼€å§‹å¤„理发送指令任务,指令:{item.Instruction} !");
            LogHelper.Info($"{session.SessionName} å¼€å§‹å¤„理发送指令任务,指令:{item.Content} !");
            var jobName = SendInstructionJobNameHelper.GetJobName(session, item.Instruction);
            var jobGroupName = SendInstructionJobNameHelper.GetJobGroupName(session, item.Instruction);
            var triggerName = SendInstructionJobNameHelper.GetTriggerName(session, item.Instruction);
            var jobName = SendInstructionJobNameHelper.GetJobName(session, item.Name);
            var jobGroupName = SendInstructionJobNameHelper.GetJobGroupName(session, item.Name);
            var triggerName = SendInstructionJobNameHelper.GetTriggerName(session, item.Name);
            //判断是否存在
            if (_sched != null)
@@ -41,7 +41,7 @@
                var triggerKey = new TriggerKey(triggerName, jobGroupName);
                if (await _sched.CheckExists(triggerKey))
                {
                    LogHelper.Info($"{session.SessionName} ä¸­ï¼ŒæŒ‡ä»¤ï¼š{item.Instruction} çš„主动请求数据任务已经开启,无需重复开启!");
                    LogHelper.Info($"{session.SessionName} ä¸­ï¼ŒæŒ‡ä»¤ï¼š{item.Content} çš„主动请求数据任务已经开启,无需重复开启!");
                    return;
                }
            }
@@ -62,7 +62,7 @@
             .WithIdentity(jobName, jobGroupName)
             .Build();
            job.JobDataMap.Put(SendInstructionJob.Session, session);
            job.JobDataMap.Put(SendInstructionJob.Instruction, BitTransfer.FromString(item.Instruction));
            job.JobDataMap.Put(SendInstructionJob.Instruction, BitTransfer.FromString(item.Content));
            //4.创建Trigger
            var trigger = TriggerBuilder.Create()
@@ -73,29 +73,29 @@
            //5.加入调度管理器
            await _sched.ScheduleJob(job, trigger);
            session.SessionClosedEvent += () => CancelJob(session, item.Instruction);
            LogHelper.Info($"{session.SessionName} ä¸­ï¼ŒæŒ‡ä»¤:{item.Instruction}  çš„主动请求数据线程开启成功!");
            session.SessionClosedEvent += () => CancelJob(session, item);
            LogHelper.Info($"{session.SessionName} ä¸­ï¼ŒæŒ‡ä»¤:{item.Content}  çš„主动请求数据线程开启成功!");
        }
        /// <summary>
        /// å–消任务
        /// </summary>
        private static async void CancelJob(Model.IMonitorDataDockingSession session, string instruction)
        private static async void CancelJob(Model.IMonitorDataDockingSession session, QueryInstructionItem item)
        {
            if (_sched == null)
                return;
            LogHelper.Info($"{session.SessionName}  æ­£æ‰“算终止主动请求数据任务");
            var triggerName = SendInstructionJobNameHelper.GetTriggerName(session, instruction);
            var jobGroupName = SendInstructionJobNameHelper.GetJobGroupName(session, instruction);
            var triggerName = SendInstructionJobNameHelper.GetTriggerName(session, item.Name);
            var jobGroupName = SendInstructionJobNameHelper.GetJobGroupName(session, item.Name);
            var triggerKey = new TriggerKey(triggerName, jobGroupName);
            if (await _sched.CheckExists(triggerKey))
            {
                await _sched.UnscheduleJob(triggerKey);
                LogHelper.Info($"{session.SessionName},指令:{instruction}  ä¸»åŠ¨è¯·æ±‚æ•°æ®ä»»åŠ¡ç»ˆæ­¢æˆåŠŸ");
                LogHelper.Info($"{session.SessionName},指令:{item.Name}  ä¸»åŠ¨è¯·æ±‚æ•°æ®ä»»åŠ¡ç»ˆæ­¢æˆåŠŸ");
            }
            else
            {
                LogHelper.Info($"{session.SessionName},指令:{instruction}  ä¸»åŠ¨è¯·æ±‚æ•°æ®ä»»åŠ¡ä¸å­˜åœ¨");
                LogHelper.Info($"{session.SessionName},指令:{item.Name}  ä¸»åŠ¨è¯·æ±‚æ•°æ®ä»»åŠ¡ä¸å­˜åœ¨");
            }
        }
Socket/IStation.DataDockingSocket4NT/paras/AppParas.cs
@@ -14,14 +14,19 @@
    public class AppParas
    {
        /// <summary>
        /// æŒ‡ä»¤å‘送间隔
        /// æŸ¥è¯¢æŒ‡ä»¤é¡¹
        /// </summary>
        public int InstructionSendSpace { get; set; }
        public List<QueryInstructionItem> InstructionQuerys { get; set; }
        /// <summary>
        /// æŒ‡ä»¤é¡¹åˆ—表
        /// å¼€æœºæŒ‡ä»¤
        /// </summary>
        public List<InstructionItem> InstructionItems { get; set; }
        public CtrlInstructionItem InstructionStartUp { get; set; }
        /// <summary>
        /// å…³æœºæŒ‡ä»¤
        /// </summary>
        public CtrlInstructionItem InstructionShutDown { get; set; }
        /// <summary>
        /// æ˜¯å¦ä¿å­˜åŽŸå§‹
@@ -32,32 +37,49 @@
        /// æ˜¯å¦è°ƒè¯•
        /// </summary>
        public bool Debug { get; set; }
    }
    /// <summary>
    /// æŸ¥è¯¢æŒ‡ä»¤é¡¹
    /// </summary>
    public class QueryInstructionItem
    {
        /// <summary>
        /// æŒ‡ä»¤å
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// æŒ‡ä»¤
        /// </summary>
        public string Content { get; set; }
        /// <summary>
        /// æŒ‡ä»¤å‘送频率 ç§’
        /// </summary>
        public int Frequency { get; set; }
        /// <summary>
        /// æŒ‡ä»¤å‘送间隔
        /// </summary>
        public int SpaceTime { get; set; }
    }
    /// <summary>
    /// æŽ§åˆ¶æŒ‡ä»¤é¡¹
    /// </summary>
    public class CtrlInstructionItem
    {
        /// <summary>
        /// æŒ‡ä»¤
        /// </summary>
        public string Content { get; set; }
    }
        /// <summary>
        /// æŒ‡ä»¤é¡¹
        /// </summary>
        public class InstructionItem
        {
            /// <summary>
            /// æŒ‡ä»¤
            /// </summary>
            public string Instruction { get; set; }
            /// <summary>
            /// æŒ‡ä»¤å‘送频率 ç§’
            /// </summary>
            public int Frequency { get; set; }
        }
}
Socket/IStation.DataDockingSocket4NT/paras/AppParasHelper.cs
@@ -13,35 +13,6 @@
    /// </summary>
    internal class AppParasHelper
    {
        /// <summary>
        /// json文件名称
        /// </summary>
        public static string JsonFileName
        {
            get
            {
                if (string.IsNullOrEmpty(_jsonFileName))
                {
                   _jsonFileName= System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "paras_datadocking_socket_nt.json");
                }
                return _jsonFileName;
            }
        }
        private static string _jsonFileName = null;
        /// <summary>
        /// èŽ·å–
        /// </summary>
        /// <returns></returns>
        public static AppParas Get()
        {
            if (_appparas == null)
            {
                var json = FileHelper.ReadAllText(JsonFileName);
                _appparas = JsonHelper.Json2Object<AppParas>(json);
            }
            return _appparas;
        }
        private static AppParas _appparas = null;
    }
}
Socket/IStation.DataDockingSocket4NT/paras_datadocking_socket_nt.json
@@ -1,15 +1,23 @@
{
  "InstructionSendSpace": 10,
  "InstructionItems": [
  "InstructionQuerys": [
    {
      "Instruction": "01-03-00-19-00-19-55-C7",
      "Frequency": 60
    },
    {
      "Instruction": "01-03-00-00-00-16-C4-04",
      "Frequency": 60
      "Name": "Data",
      "Content": "01-03-00-19-00-19-55-C7",
      "Frequency": 60,
      "SpaceTime": 0
    }
    // ,
    //{
    //  "Instruction": "01-03-00-00-00-16-C4-04",
    //  "Frequency": 60
    //}
  ],
  "InstructionStartUp": {
    "Content": "01-03-00-19-00-19-55-C7"
  },
  "InstructionShutDown": {
    "Content": "01-03-00-19-00-19-55-C7"
  },
  "Debug": true,
  "Src": true
}
Untity/IStation.Unit/µ¥Î»Ã¶¾Ù/eUnitType.cs
@@ -171,8 +171,12 @@
        /// åŠ é€Ÿåº¦
        /// </summary>
        [Display(Name = "加速度")]
        åŠ é€Ÿåº¦ = 26,
        åŠ é€Ÿåº¦ = 26,
        /// <summary>
        /// è´¨é‡
        /// </summary>
        [Display(Name = "质量")]
        è´¨é‡ = 27,
        /// <summary>
        /// è‡ªå®šä¹‰
        /// </summary>
Untity/IStation.Unit/µç¶È_ÎÞ¹¦/UnitDegreeQHelper.cs
Untity/IStation.Unit/µç¶È_ÎÞ¹¦/eUnitDegreeQ.cs
Untity/IStation.Unit/µç¶È_Óй¦/UnitDegreeHelper.cs
Untity/IStation.Unit/µç¶È_Óй¦/eUnitDegree.cs