public void CopyData(GraphLayer g, int intervalSec) { _startTime = _DataArray[_firstIndex].Key.AddYears(-1); g.ClearData(); for (int i = _firstIndex; i != _lastIndex; ++i) { i %= _sizeArray; g.UpdateData(_DataArray[i].Value, _DataArray[i].Key.AddTicks(-_startTime.Ticks)); } g.UpdateAsis(_DataArray[_firstIndex].Key, _DataArray[_firstIndex].Key.AddSeconds(intervalSec)); }
private void ReadPortData(byte[] inBuf, int rxIndex) { //case GetFlowCommand : // расход // FlowTemp = 0; // FlowTemp = getchar(); // FlowTemp = (FlowTemp << 8) + getchar(); // FlowTemp = (FlowTemp << 8) + getchar(); // FlowTemp = (FlowTemp << 8) + getchar(); if (inBuf[rxIndex] == GetFlowCommand) { txtDebug.Text = string.Format("{0:X2} {1:X2} {2:X2} {3:X2} {4:X2}", inBuf[rxIndex], inBuf[rxIndex + 1], inBuf[rxIndex + 2], inBuf[rxIndex + 3], inBuf[rxIndex + 4]); //int y = BitConverter.ToInt32(inBuf, rxIndex+1); int y = (((int)inBuf[rxIndex + 1]) << 24) + (((int)inBuf[rxIndex + 2]) << 16) + (((int)inBuf[rxIndex + 3]) << 8) + ((int)inBuf[rxIndex + 4]); if (y > Math.Max(_maxVal * 10, 30 * 1000)) { return; //Всплески } txtValue.Text = y.ToString(); txtValueMin.Text = (y - _minVal).ToString(); y -= _minVal; _yMidArr[_yIndex] = y; _yIndex++; _yIndex %= _yMidCnt; int temp = 0; for (int i = 0; i < _yMidCnt; i++) { temp += _yMidArr[(i + _yIndex) % _yMidCnt]; } txtMidValue.Text = (temp / _yMidCnt).ToString(); if (_status == Status.Start) { txtLogValuemiMin.AppendText(y.ToString() + "\r\n"); txtLogMaxdelValue.AppendText(((double)_maxVal / (double)y).ToString() + "; " + ((double)y * 1000.0 / _maxVal).ToString() + "\r\n"); DateTime x = DateTime.Now.AddTicks(-_timeStart.Ticks); _graphLayer.UpdateData(y / 1000.0, x, (double)y / _maxVal); //Делим в литры! _dataSaveLayer.UpdateData(y / 1000.0, x); } } }