コード例 #1
0
ファイル: JoyCon.cs プロジェクト: Uzukidd/project01
 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;
 }
コード例 #2
0
ファイル: JoyCon.cs プロジェクト: Uzukidd/project01
    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);
        }
    }
コード例 #3
0
    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);
    }