private void refreshList() { listBox1.Items.Clear(); if (RelayDeviceWrapper.usb_relay_init() != 0) { Console.WriteLine("Couldn't initialize!"); MessageBox.Show("Couldn't initialize!"); return; } else { Console.WriteLine("Initialized successfully!"); } List <usb_relay_device_info> devicesInfos = new List <usb_relay_device_info>(); usb_relay_device_info deviceInfo = RelayDeviceWrapper.usb_relay_device_enumerate(); devicesInfos.Add(deviceInfo); while (deviceInfo.next.ToInt32() > 0) { deviceInfo = (usb_relay_device_info)Marshal.PtrToStructure(deviceInfo.next, typeof(usb_relay_device_info)); devicesInfos.Add(deviceInfo); } foreach (var device in devicesInfos) { listBox1.Items.Add(device); } }
public static usb_relay_device_info usb_relay_device_enumerate() { IntPtr x = RelayDeviceWrapper.Pusb_relay_device_enumerate(); usb_relay_device_info a = (usb_relay_device_info)Marshal.PtrToStructure(x, typeof(usb_relay_device_info)); return(a); }
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { if (_deviceHandle > 0) { RelayDeviceWrapper.usb_relay_device_close(_deviceHandle); _deviceHandle = 0; } for (int i = 0; i < _buttonList.Count; i++) { _buttonList[i].BackColor = BackColor; _buttonList[i].Enabled = false; } var lb = (ListBox)sender; usb_relay_device_info device = (usb_relay_device_info)lb.SelectedItem; _deviceHandle = RelayDeviceWrapper.usb_relay_device_open(ref device); int numberOfRelays = (int)device.type; uint status = 0; RelayDeviceWrapper.usb_relay_device_get_status(_deviceHandle, ref status); for (int i = 0; i < numberOfRelays; i++) { _buttonList[i].Enabled = true; if (status > numberOfRelays) { _buttonList[i].BackColor = Color.Red; } else if (i + 1 == status) { _buttonList[i].BackColor = Color.Red; } } }
public static extern int usb_relay_device_open(ref usb_relay_device_info device_info);