diff --git a/JoystickProxyWin/Joystick Proxy/ControllerDevice.cs b/JoystickProxyWin/Joystick Proxy/ControllerDevice.cs index 3076a8e..de906ad 100644 --- a/JoystickProxyWin/Joystick Proxy/ControllerDevice.cs +++ b/JoystickProxyWin/Joystick Proxy/ControllerDevice.cs @@ -24,7 +24,7 @@ public class ControllerDevice : IEquatable private Joystick _joystick; private string _usbId; - + private bool NotPollable = false; public ControllerDevice(DirectInput di, DeviceInstance deviceInstance) { @@ -35,13 +35,19 @@ public ControllerDevice(DirectInput di, DeviceInstance deviceInstance) Joystick.Properties.BufferSize = 32; } - ~ControllerDevice() - { - try { Joystick.Unacquire(); } catch (Exception) {} - } - public void Update() { - Joystick.Poll(); + if (NotPollable) + return; + + try + { + Joystick.Poll(); + } + catch (Exception) + { + NotPollable = true; + return; + } List updatedStates = new List(); diff --git a/JoystickProxyWin/Joystick Proxy/Form1.Designer.cs b/JoystickProxyWin/Joystick Proxy/Form1.Designer.cs index 9c26b4f..32a28bf 100644 --- a/JoystickProxyWin/Joystick Proxy/Form1.Designer.cs +++ b/JoystickProxyWin/Joystick Proxy/Form1.Designer.cs @@ -32,19 +32,19 @@ private void InitializeComponent() System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.devicesDataGridView = new System.Windows.Forms.DataGridView(); - this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.uSBIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.controllerDeviceBindingSource = new System.Windows.Forms.BindingSource(this.components); this.refreshDevicesTimer = new System.Windows.Forms.Timer(this.components); this.dataGridView1 = new System.Windows.Forms.DataGridView(); this.InputName = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.InputValue = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.inputBindingSource = new System.Windows.Forms.BindingSource(this.components); this.readInputTimer = new System.Windows.Forms.Timer(this.components); + this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.uSBIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.controllerDeviceBindingSource = new System.Windows.Forms.BindingSource(this.components); ((System.ComponentModel.ISupportInitialize)(this.devicesDataGridView)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.controllerDeviceBindingSource)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.inputBindingSource)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.controllerDeviceBindingSource)).BeginInit(); this.SuspendLayout(); // // devicesDataGridView @@ -73,30 +73,6 @@ private void InitializeComponent() this.devicesDataGridView.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.devicesDataGridView_CellFormatting); this.devicesDataGridView.SelectionChanged += new System.EventHandler(this.DevicesDataGridView_SelectionChanged); // - // nameDataGridViewTextBoxColumn - // - this.nameDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name"; - this.nameDataGridViewTextBoxColumn.FillWeight = 80F; - this.nameDataGridViewTextBoxColumn.HeaderText = "Name"; - this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn"; - this.nameDataGridViewTextBoxColumn.ReadOnly = true; - // - // uSBIDDataGridViewTextBoxColumn - // - this.uSBIDDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.uSBIDDataGridViewTextBoxColumn.DataPropertyName = "UsbId"; - dataGridViewCellStyle1.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.uSBIDDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; - this.uSBIDDataGridViewTextBoxColumn.FillWeight = 20F; - this.uSBIDDataGridViewTextBoxColumn.HeaderText = "USB ID"; - this.uSBIDDataGridViewTextBoxColumn.Name = "uSBIDDataGridViewTextBoxColumn"; - this.uSBIDDataGridViewTextBoxColumn.ReadOnly = true; - // - // controllerDeviceBindingSource - // - this.controllerDeviceBindingSource.DataSource = typeof(Joystick_Proxy.ControllerDevice); - // // refreshDevicesTimer // this.refreshDevicesTimer.Enabled = true; @@ -139,9 +115,33 @@ private void InitializeComponent() // // readInputTimer // - this.readInputTimer.Interval = 10; + this.readInputTimer.Interval = 20; this.readInputTimer.Tick += new System.EventHandler(this.ReadInputTimer_Tick); // + // nameDataGridViewTextBoxColumn + // + this.nameDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name"; + this.nameDataGridViewTextBoxColumn.FillWeight = 80F; + this.nameDataGridViewTextBoxColumn.HeaderText = "Name"; + this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn"; + this.nameDataGridViewTextBoxColumn.ReadOnly = true; + // + // uSBIDDataGridViewTextBoxColumn + // + this.uSBIDDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.uSBIDDataGridViewTextBoxColumn.DataPropertyName = "UsbId"; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.uSBIDDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.uSBIDDataGridViewTextBoxColumn.FillWeight = 20F; + this.uSBIDDataGridViewTextBoxColumn.HeaderText = "USB ID"; + this.uSBIDDataGridViewTextBoxColumn.Name = "uSBIDDataGridViewTextBoxColumn"; + this.uSBIDDataGridViewTextBoxColumn.ReadOnly = true; + // + // controllerDeviceBindingSource + // + this.controllerDeviceBindingSource.DataSource = typeof(Joystick_Proxy.ControllerDevice); + // // Form1 // this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; @@ -152,9 +152,9 @@ private void InitializeComponent() this.Name = "Form1"; this.Text = "DirectInput Device List"; ((System.ComponentModel.ISupportInitialize)(this.devicesDataGridView)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.controllerDeviceBindingSource)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.inputBindingSource)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.controllerDeviceBindingSource)).EndInit(); this.ResumeLayout(false); } diff --git a/JoystickProxyWin/Joystick Proxy/Form1.cs b/JoystickProxyWin/Joystick Proxy/Form1.cs index f2c6934..a83fb53 100644 --- a/JoystickProxyWin/Joystick Proxy/Form1.cs +++ b/JoystickProxyWin/Joystick Proxy/Form1.cs @@ -161,7 +161,10 @@ private void ReadInputTimer_Tick(object sender, EventArgs e) { foreach(ControllerDevice device in _devices) { - try { device.Update(); } catch(Exception) {} + try { device.Update(); } catch(Exception ex) { + Debug("Failure when running device Update()"); + Debug(ex.Message); + } } ControllerDevice selectedDevice = (ControllerDevice)devicesDataGridView.CurrentRow.DataBoundItem; diff --git a/JoystickVisualizer/Assets/Devices/MFG Crosswind/MFGCrosswind.cs b/JoystickVisualizer/Assets/Devices/MFG Crosswind/MFGCrosswind.cs index 79182df..c9adeb4 100644 --- a/JoystickVisualizer/Assets/Devices/MFG Crosswind/MFGCrosswind.cs +++ b/JoystickVisualizer/Assets/Devices/MFG Crosswind/MFGCrosswind.cs @@ -4,7 +4,8 @@ public class MFGCrosswind : MonoBehaviour { - public const string USB_ID = "06a3:0764"; + public const string USB_ID = "????:????"; + //public const string USB_ID = "06a3:0764"; public GameObject Model;