public void DataQueueTest()
        {
            var au = new AutoResetEvent(false);
            var i = new TestInterface();
            var d = new DataQueue(i);
            d.Error += (a, b) => au.Set();
            d.QueueEmpty += (a, b) => au.Set();
            d.Run();

            for (int x = 0; x < 100; x++)
            {
                var z = new TestPw();
                d.EnqueData(z);
                au.WaitOne();
                Assert.IsTrue(z.ModuleDataCheckOk);
            }
        }
        private void Connect(Tuple<string, ConnectType> specs)
        {
            try
            {
                _interface = ConnectionFactory(specs.Item2);

                _interface.DataReceived += (sender, bytes) => _mcucomm.Fire(Cevts.ReceiveCompleted, bytes);
                _interface.ErrorOccured += (sender, s) => _mcucomm.Fire(Cevts.Error, s.Exception.ToString());
                _interface.ModeChanged += (sender, b) => _mcucomm.Fire(b.Connected ? Cevts.Connected : Cevts.Disconnect);
                _interface.Connect(specs.Item1);

                _dataQueue = new DataQueue(_interface);

                _dataQueue.Error += (sender, exception) => _mcucomm.Fire(Cevts.Error, exception.Exception.Message);
                _dataQueue.QueueEmpty += (sender, args) => _mcucomm.Fire(Cevts.QueueEmtpy);

                _dataQueue.Run();
            }
            catch (Exception e)
            {
                _mcucomm.Fire(Cevts.Error, e.Message);
            }
        }