Exemple #1
0
        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);
                    }
                }
            }
        }
Exemple #2
0
 void UsbReader_OnDataReceived(object sender, UsbDataReceiveEventArgs e)
 {
     this.LastReceived = DateTime.Now;
     if (this.Channels.Any(c => c.IsRecording))
     {
         Action <UsbDataReceiveEventArgs> act = new Action <UsbDataReceiveEventArgs>(ProcessRecordData);
         act.BeginInvoke(e, null, null);
         //ProcessRecordData(e);
     }
     else if (_ringBuffer.Count() > 0)
     {
         _ringBuffer.Clear();
     }
 }