Beispiel #1
0
        /// <summary>
        ///     通过节点值名称,获取本设备信息的值
        /// </summary>
        /// <param name="name">节点值名称</param>
        /// <returns>JSON值</returns>
        public JToken GetJsonValueByName(string name)
        {
            JToken result = null;

            jsonLock.Enter();
            if (JObjectData.ContainsKey(name))
            {
                result = JObjectData[name];
            }
            jsonLock.Leave();
            return(result);
        }
Beispiel #2
0
        private void ThreadReadBackground()
        {
            Thread.Sleep(1000); // 默认休息一下下
            BeforStart();       // 需要子类重写

            while (isQuit == 0)
            {
                Thread.Sleep(100);

                var isDataChange = false; // 数据是否发生了变化
                foreach (var Request in Requests)
                {
                    if ((DateTime.Now - Request.LastActiveTime).TotalMilliseconds > Request.CaptureInterval)
                    {
                        Request.LastActiveTime = DateTime.Now;

                        var read = ReadWriteDevice.Read(Request.Address, Request.Length);
                        if (read.IsSuccess)
                        {
                            IsError      = false;
                            isDataChange = true;
                            ParseFromRequest(read.Content, Request);
                            ActiveTime = DateTime.Now;
                            RequestSuccessCount++;
                        }
                        else
                        {
                            IsError = true;
                            RequestFailedCount++;
                        }
                    }
                }

                // 更新Json字符串缓存
                jsonLock.Enter();
                if (isDataChange)
                {
                    JsonData = JObjectData.ToString();
                }
                jsonLock.Leave();
            }


            AfterClose();        // 需要子类重写
            autoResetQuit.Set(); // 通知关闭的线程继续
        }
 public object GetData()
 {
     return(JObjectData == null ? null : JObjectData.ToObject(MsgType.DataType));
 }