private void SetDefaultStickCalibratrion() { this.stickCal = new StickCalibration(); stickCal.xCenter = 0x7FFF; stickCal.xMin = 0x0000; stickCal.xMax = 0xFFFF; stickCal.yCenter = 0x7FFF; stickCal.yMin = 0x0000; stickCal.yMax = 0xFFFF; }
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); } }
public static StickCalibration ReadStickCalibration(Report report, JoyConType type) { report.Seek(20); var cal = new StickCalibration(); var temp = new ushort[2]; if (type == JoyConType.LEFT) { temp = report.Read2UInt12(); cal.xMax = temp[0]; cal.yMax = temp[1]; temp = report.Read2UInt12(); cal.xCenter = temp[0]; cal.yCenter = temp[1]; temp = report.Read2UInt12(); cal.xMin = temp[0]; cal.xMin = temp[1]; } else { temp = report.Read2UInt12(); cal.xCenter = temp[0]; cal.yCenter = temp[1]; temp = report.Read2UInt12(); cal.xMin = temp[0]; cal.xMin = temp[1]; temp = report.Read2UInt12(); cal.xMax = temp[0]; cal.yMax = temp[1]; } //cal.xMin = 0x0; //cal.xCenter = 0x7ff; //cal.xMax = 0xfff; //cal.yMin = 0x0; //cal.yCenter = 0x7ff; //cal.yMax = 0xfff; return(cal); }