/// <summary> /// Gets hardware information about the FFB device as reported by DirectInput. /// </summary> /// <returns> /// </returns> public DataClasses.HardwareInfo GetHardwareInfo() { if (ffbDevice == null) { return(null); } DataClasses.HardwareInfo dc = new DataClasses.HardwareInfo(); //Get info about hardware dc.axesCount = ffbDevice.Capabilities.AxesCount; dc.buttonCount = ffbDevice.Capabilities.ButtonCount; dc.povCount = ffbDevice.Capabilities.PovCount; dc.driverVersion = ffbDevice.Capabilities.DriverVersion; dc.fwVersion = ffbDevice.Capabilities.FirmwareRevision; dc.hwRevision = ffbDevice.Capabilities.HardwareRevision; dc.ffbMinTime = ffbDevice.Capabilities.ForceFeedbackMinimumTimeResolution; dc.ffbSamplePer = ffbDevice.Capabilities.ForceFeedbackSamplePeriod; return(dc); }
/** Probes the selected FFB device and creates a list * of available FFB effects if successful. Also starts a timer * which periodically reads the status of device's axes and buttons */ private void cboxDevices_onDeviceSelected(object sender, EventArgs e) { ComboBox cbox = (ComboBox)sender; int selectedIdx = cbox.SelectedIndex; DInputHandler dih = GetDInputHandlerFromDict(selectedIdx); if (dih == null) { return; } //Get available effects for the currently selected device availableFFBEffects = dih.GetFFBEffects(); if (availableFFBEffects.Count == 0) { MessageBox.Show("No force feedback effects available for this device.", FFBInspector.Properties.Resources.errCap_noEffect, MessageBoxButtons.OK, MessageBoxIcon.Stop); } else { cboxEffects.Items.Clear(); foreach (EffectInfo ei in availableFFBEffects) { cboxEffects.Items.Add(ei.Name + " (" + ei.Guid.ToString() + ")"); } cboxEffects.SelectedIndex = 0; //Select first effect in the list } //Get available force feedback actuators and create respective UI elements int actuators = dih.GetFFBActuatorCount(); if (actuators == 0) { MessageBox.Show("No force feedback actuators found on this device.", FFBInspector.Properties.Resources.errCap_devError, MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } /* Create textboxes in Directions groupbox to control * direction of the effect on each actuator */ if (axesControls != null) { panelAxes.Controls.Clear(); //Remove all existing textboxes } axesControls = new List <TextBox>(); for (int i = 0; i < actuators; i++) { axesControls.Add(new TextBox()); if (i == 0) { axesControls[i].Text = "1"; } else { axesControls[i].Text = "0"; axesControls[i].Top = axesControls[i - 1].Top + 25; } panelAxes.Controls.Add(axesControls[i]); } DataClasses.HardwareInfo dc = dih.GetHardwareInfo(); if (dc != null) { //Display hardware info on the "Info" tab axesCount.Text = dc.axesCount.ToString(); buttonCount.Text = dc.buttonCount.ToString(); povCount.Text = dc.povCount.ToString(); driverVersion.Text = dc.driverVersion.ToString(); fwVersion.Text = dc.fwVersion.ToString(); hwRevision.Text = dc.hwRevision.ToString(); ffbMinTime.Text = dc.ffbMinTime.ToString(); ffbSamplePeriod.Text = dc.ffbSamplePer.ToString(); } MarkAllSlots(dih); //Start the controls status updating timer if (updateDeviceStatus == null) { updateDeviceStatus = new Timer(); updateDeviceStatus.Interval = 75; updateDeviceStatus.Tick += new EventHandler(updateDeviceStatus_onTick); updateDeviceStatus.Enabled = true; } }
/// <summary> /// Gets hardware information about the FFB device as reported by DirectInput. /// </summary> /// <returns> /// </returns> public DataClasses.HardwareInfo GetHardwareInfo() { if (ffbDevice == null) return null; DataClasses.HardwareInfo dc = new DataClasses.HardwareInfo(); //Get info about hardware dc.axesCount = ffbDevice.Capabilities.AxesCount; dc.buttonCount = ffbDevice.Capabilities.ButtonCount; dc.povCount = ffbDevice.Capabilities.PovCount; dc.driverVersion = ffbDevice.Capabilities.DriverVersion; dc.fwVersion = ffbDevice.Capabilities.FirmwareRevision; dc.hwRevision = ffbDevice.Capabilities.HardwareRevision; dc.ffbMinTime = ffbDevice.Capabilities.ForceFeedbackMinimumTimeResolution; dc.ffbSamplePer = ffbDevice.Capabilities.ForceFeedbackSamplePeriod; return dc; }