Exemplo n.º 1
0
        private static void HID_CheckConnectionThread()
        {
            byte[] RxBuff = new byte[65];
            byte[] TxBuff = new byte[65];

Disconnected:
            while (LevelingSystemDevice == null)
            {
                Thread.Sleep(100);
                LevelingSystemDevice = loader.GetDevices(2003, 7003).FirstOrDefault(d => d.MaxInputReportLength == 65);
            }
            DataHanlderClass.ChangeRadioButtonState(MW.ConnectedInd, true, "Connected");
            UpdateZeroData = true;
            if (!LevelingSystemDevice.TryOpen(out USB_Stream))
            {
                MessageBox.Show("Failed to connect to device", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
                Environment.Exit(2);
            }
            using (USB_Stream)
            {
                while (true)
                {
                    try
                    {
                        RxBuff = USB_Stream.Read();
                        if (TXQueue.Count > 0)
                        {
                            TxBuff = TXQueue.Dequeue();
                            USB_Stream.Write(TxBuff);
                        }
                    }
                    catch
                    {
                        USB_Stream.Close();
                        LevelingSystemDevice = null;
                        DataHanlderClass.ChangeRadioButtonState(MW.ConnectedInd, false, "Disconnected");
                        goto Disconnected;
                    }
                    if (RxBuff != null)
                    {
                        RxQueue.Enqueue(RxBuff);
                    }

                    Thread.Sleep(1);
                }
            }
        }