Ejemplo n.º 1
0
        public void Start()
        {
            Stop();

            _interface.Open();
            _interface.SetDevicesQuiet();
            System.Threading.Thread.Sleep(100);
            _interface.ClearReceiveBufor();
            _running = true;
            _ignore  = true;
            for (int i = 0; i < _devices.Length; i++)
            {
                _devices[i].Initialize();
                _devices[i].SetId((byte)i);
                _devices[i].StartScan();
            }
            System.Threading.Thread.Sleep(50);
            for (int i = 0; i < _devices.Length; i++)
            {
                _devices[i].StopScan();
            }
            System.Threading.Thread.Sleep(50);
            _ignore = false;
            for (int i = 0; i < _devices.Length; i++)
            {
                _devices[i].GetState();
                _devices[i].StartScan();
            }
        }
Ejemplo n.º 2
0
        void Button3Click(object sender, EventArgs e)
        {
            // wykrycie urządzeń i wyświetlenie listy wyboru

            try
            {
                // otwarcie interfejsu
                _interf.Open();

                // wysłanie rozkazu zakończenia skanowania wejść
                _interf.SetDevicesQuiet();

                // odczekanie 100ms
                System.Threading.Thread.Sleep(100);

                // wyczyszczenie bufora rs
                _interf.ClearReceiveBufor();

                DeviceReportsReceiver receiver = new DeviceReportsReceiver();
                _interf.Receiver = receiver;

                // wysłanie rozkazu wyłania raportu
                _interf.DevicesReports();

                // odczekanie na raporty
                System.Threading.Thread.Sleep(100);

                // odczytanie listy urządzeń
                receiver.Stop = true;
                int[] devs = receiver.Devices();

                // odfiltrowanie tylko urządzeń z wejściami cyfrowymi
                List <int> tmp = new List <int>();
                for (int i = 0; i < devs.Length; i++)
                {
                    if (Device.IsDeviceTypeKeys(devs[i] & 0xff))
                    {
                        tmp.Add(devs[i]);
                    }
                }
                devs = tmp.ToArray();

                if (devs == null || devs.Length == 0)
                {
                    MessageBox.Show(this, "Nie wykryto żadnych nowych urządzeń.", "Uwaga", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                // usunięcie z menu poprzednich pozycji
                while (devicesMenu.Items.Count > 2)
                {
                    devicesMenu.Items.RemoveAt(0);
                }

                // utworzenie menu
                for (int i = 0; i < devs.Length; i++)
                {
                    int           dev  = devs[devs.Length - i - 1];
                    ToolStripItem item = new ToolStripMenuItem(string.Format("ID = {0}, Typ = {1}", (dev >> 8) & 0xff, Device.DeviceTypeToName(dev & 0xff)));
                    item.Tag    = dev;
                    item.Click += new EventHandler(item_Click);
                    devicesMenu.Items.Insert(0, item);
                }

                // pokazanie menu
                devicesMenu.Show(button3, new Point(0, 0));
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                _interf.Close(_configuration);
            }
        }