Exemplo n.º 1
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="defaultInputStreamParser">输入流默认解析器</param>
        /// <param name="defaultOutputStreamParser">输出流默认解析器</param>
        /// <param name="remoteDeviceCodes">需要监视的设备编号集合。</param>
        /// <param name="timeout">事件的刷新周期,0表示立即刷新。</param>
        /// <param name="warningThreshold">指定一个值,当缓存池中的数据超过此值时将打印警告日志。</param>
        public GenericMonitorControl(
            IStreamFrameParser <byte> defaultInputStreamParser  = null,
            IStreamFrameParser <byte> defaultOutputStreamParser = null,
            IEnumerable <string> remoteDeviceCodes = null,
            uint timeout = 500, uint warningThreshold = 50)
        {
            InitializeComponent();

            this.CreateHandle();

            _inputStreamDefaultParser  = defaultInputStreamParser;
            _outputStreamDefaultParser = defaultOutputStreamParser;

            this.MaxSummaryCount = 100;

            // 更新UI
            this.InitializeUI();

            // 初始化需要监控的远程设备编号。
            if (remoteDeviceCodes != null)
            {
                remoteDeviceCodes.ToList().ForEach(p => this.SetConnectionState(p, false));
            }

            // 创建缓存池。
            CreateProductCache(timeout, warningThreshold);
        }
Exemplo n.º 2
0
 public OutgoingData(string remoteDeviceID, byte[] stream, object frame, IStreamFrameParser <byte> parser,
                     FrameSentResult result, string toolTipText)
     : base(remoteDeviceID, stream, frame, parser)
 {
     this.Result      = result;
     this.ToolTipText = toolTipText;
 }
Exemplo n.º 3
0
            public DataCached(string remoteDeviceID, byte[] stream, object frame, IStreamFrameParser <byte> parser)
            {
                this.CreationTime = DateTime.Now;

                this.RemoteDeviceID = remoteDeviceID;
                this.Stream         = stream;
                this.Frame          = frame;
                this.Parser         = parser;
            }
Exemplo n.º 4
0
            public TreeNodeTag(object frame, byte[] stream, IStreamFrameParser <byte> parser = null)
            {
                if (stream == null)
                {
                    throw new ArgumentNullException();
                }

                this.Frame  = frame;
                this.Stream = stream;
                this.Parser = parser;
            }
Exemplo n.º 5
0
        /// <summary>
        /// 添加一条发送出去的字节流
        /// </summary>
        /// <param name="remoteDeviceID">远程设备编号</param>
        /// <param name="stream">数据流</param>
        /// <param name="frame">数据流对应的协议帧对象。</param>
        /// <param name="parser">数据流对应的解析器</param>
        /// <param name="result">发送结果</param>
        /// <param name="toolTipText">当鼠标悬停在TreeNode之上时显示的文字。</param>
        public void AddOutgoingStream(string remoteDeviceID, byte[] stream, object frame = null, IStreamFrameParser <byte> parser = null,
                                      FrameSentResult result = FrameSentResult.Unknown,
                                      string toolTipText     = null)
        {
            if (!_OutgoingStreamVisable)
            {
                return;
            }

            var data = new Tuple <bool, DataCached>(false, new OutgoingData(remoteDeviceID, stream, frame, parser, result, toolTipText));

            _productCache.AddProduct(data);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 添加一条接收到的流
        /// </summary>
        /// <param name="remoteDeviceID">远程设备编号</param>
        /// <param name="stream">数据流</param>
        /// <param name="frame">数据流对应的协议帧对象。</param>
        /// <param name="parser">数据流对应的解析器</param>
        public void AddIncomingStream(string remoteDeviceID, byte[] stream, object frame = null, IStreamFrameParser <byte> parser = null)
        {
            if (!_IncomingStreamVisable)
            {
                return;
            }

            var data = new Tuple <bool, DataCached>(true, new IncomingData(remoteDeviceID, stream, frame, parser));

            _productCache.AddProduct(data);
        }
Exemplo n.º 7
0
 public IncomingData(string remoteDeviceID, byte[] stream, object frame, IStreamFrameParser <byte> parser)
     : base(remoteDeviceID, stream, frame, parser)
 {
 }