public static StickParameter ReadStickParameter(Report report, JoyConType type) { report.Seek(20); var para = new StickParameter(); report.Read2UInt12(); var temp = report.Read2UInt12(); para.deadzone = temp[0]; para.rangeRatio = temp[1]; return(para); }
private void GetCalibrationData() { try { // Get stick's calibration infomation var report = CommandHelper.GetStickCalibration(this.Type, this.handle); this.stickCal = SPIReportReader.ReadStickCalibration(report, this.Type); Debug.Log(string.Format( "Stick calibration data: xMax:{0} xCenter:{1} xMin:{2} yMax:{3} yCenter:{4} yMin:{5} ", stickCal.xMax, stickCal.xCenter, stickCal.xMin, stickCal.yMax, stickCal.yCenter, stickCal.yMin)); } catch (Exception ex) { SetDefaultStickCalibratrion(); } try { // Get stick's parameter infomation, mainly deadzone var report = CommandHelper.GetStickParameters(Type, handle); this.stickPara = SPIReportReader.ReadStickParameter(report, Type); this.deadZone = stickPara.deadzone; Debug.Log(string.Format("Deadzone: {0}", deadZone)); } catch (Exception ex) { SetDefaultStickParameter(); Debug.LogError(ex); } try { // Get 6-axis sensor's calibration infomation var report = CommandHelper.GetSixAxisCalibration(handle); sixAxisCal = SPIReportReader.ReadSixAxisCalibration(report); for (int i = 0; i < 3; i++) { accCalCoeff[i] = (float)(1.0 / (sixAxisCal.accCoeff[i] - sixAxisCal.accOrigin[i])) * 4.0f * 9.8f; gyroCalCoeff[i] = (float)((sixAxisCal.gyroCoeff[i] / 10) / (sixAxisCal.gyroCoeff[i] - sixAxisCal.gyroOrigin[i])); } //Debug.Log(string.Format("6-Axis calibration data: accOrigin:{0} accCoeff:{1} gyroOrigin:{2} gyroCoeff:{3} ", //sixAxisCal.accOrigin, sixAxisCal.accCoeff, sixAxisCal.gyroOrigin, sixAxisCal.gyroCoeff)); } catch (Exception ex) { SetDefaultSixAxisCalibratrion(); Debug.LogError(ex); } }
private void SetDefaultStickParameter() { this.stickPara = new StickParameter(); stickPara.deadzone = 0xAE; }