//============================================================ // <T>数据刷新处理。</T> //============================================================ public void DrawFrame(DrawingContext context, FFrameInfo frameInfo) { int loggerCount = frameInfo.Loggers.Count; int index = frameInfo.Index; int left = _drawFrameWidth * index; int top = 150 - loggerCount; context.DrawRectangle(_brush, _pen, new Rect(left, top, left + _drawFrameWidth - 1, 200 - top)); }
//============================================================ // <T>数据刷新处理。</T> //============================================================ public void DataRefresh() { // 获得信息 FApplicationInfo info = RScoutManager.InfoConsole.ActiveInfo; DrawingContext context = _visual.RenderOpen(); // 绘制所有帧 int count = info.Frames.Count; for (int n = 0; n < count; n++) { FFrameInfo frameInfo = info.Frames.Get(n); DrawFrame(context, frameInfo); } context.Close(); // 绘制处理 _bitmap.Clear(); _bitmap.Render(_visual); }
//============================================================ // <T>执行处理。</T> //============================================================ public void ProcessMessage() { // 读取头信息 int length = _data.ReadInt32(); int type = _data.ReadUint8(); int level = _data.ReadUint8(); long tick = _data.ReadInt64(); int dataLength = length - 14; // 读取数据 byte[] data = new byte[dataLength]; _data.Read(data, 0, dataLength); string message = Encoding.ASCII.GetString(data); // 创建日志 FLoggerInfo loggerInfo = new FLoggerInfo(); loggerInfo.Tick = tick; loggerInfo.Level = level; loggerInfo.Message = message; // 放入应用中 FFrameInfo info = _applicationInfo.SyncFrame(tick); info.Loggers.Push(loggerInfo); }