private void ProcessRecordData(UsbDataReceiveEventArgs e) { lock (_ringBuffer) { _ringBuffer.Put(e.Data, 0, e.Data.Length); bool found = true; int start = Find(Begin1); ArrayList arr = new ArrayList(); while (found) { int count = _ringBuffer.Count(); found = start >= 0 && count > start + 2 + DataLength && _ringBuffer.ElementAt(start + 1) == Begin2; if (found) { var len = start + DataLength + 2; var data = new byte[len]; _ringBuffer.Get(data, 0, len); foreach (var channel in this.Channels.Where(c => c.IsRecording)) { //channel.AddData(data[start + 2 + channel.Index]); channel.AddData(data[start + 2 + channel.CurrentPOId]); } start = Find(Begin1); } } } }