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(); } }
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); } }