BetterJoy_CHS icon indicating copy to clipboard operation
BetterJoy_CHS copied to clipboard

貌似Joycon.cs中有问题,会导致gyr_g永远都是-Infinity

Open huhuime opened this issue 2 years ago • 7 comments

比如Joycon.cs中第1058行 gyr_g.X = (gyr_r[i] - gyr_neutral[i]) * (816.0f / (gyr_sensiti[i] - gyr_neutral[i])); 查询gyr_sensiti和gyr_neutral赋值过程

gyr_neutral[0] = (Int16)(buf_[0] | ((buf_[1] << 8) & 0xff00));
gyr_neutral[1] = (Int16)(buf_[2] | ((buf_[3] << 8) & 0xff00));
gyr_neutral[2] = (Int16)(buf_[4] | ((buf_[5] << 8) & 0xff00));
gyr_sensiti[0] = (Int16)(buf_[0] | ((buf_[1] << 8) & 0xff00));
gyr_sensiti[1] = (Int16)(buf_[2] | ((buf_[3] << 8) & 0xff00));
gyr_sensiti[2] = (Int16)(buf_[4] | ((buf_[5] << 8) & 0xff00));
 if (isSnes || thirdParty) {
                short[] temp = (short[])ConfigurationManager.AppSettings["加速度传感器灵敏度"].Split(',').Select(s => short.Parse(s)).ToArray();
                acc_sensiti[0] = temp[0]; acc_sensiti[1] = temp[1]; acc_sensiti[2] = temp[2];
                temp = (short[])ConfigurationManager.AppSettings["陀螺仪敏感度"].Split(',').Select(s => short.Parse(s)).ToArray();
                gyr_sensiti[0] = temp[0]; gyr_sensiti[1] = temp[1]; gyr_sensiti[2] = temp[2];
......

看起来第3段有额外赋值,但是查询isSnesthirdParty赋值过程可以发下在Program.cs中195行附件是这么写的

bool isPro = prod_id == product_pro;
bool isSnes = prod_id == product_snes;

这导致就算是pro手柄也必须设置为第3方手柄才能用陀螺仪?

huhuime avatar Feb 14 '23 11:02 huhuime

我用的是ns pro,连接后不需要设置啥的能用陀螺仪。代码可能存在问题。没去研究代码如何运行的

xiyanxy avatar Feb 14 '23 11:02 xiyanxy

可能降级用加速度传感器来处理实现了吧,udp测试也是有问题的,你那不会一直提示“重复的时间戳加入队列”,这个也是ns pro必出bug🤣

huhuime avatar Feb 14 '23 11:02 huhuime

可能降级用加速度传感器来处理实现了吧,udp测试也是有问题的,你那不会一直提示“重复的时间戳加入队列”,这个也是ns pro必出bug🤣

huhuime avatar Feb 14 '23 11:02 huhuime

可能降级用加速度传感器来处理实现了吧,udp测试也是有问题的,你那不会一直提示“重复的时间戳加入队列”,这个也是ns pro必出bug🤣

😂我的ns pro连接就显示switch pro已连接之类的 没有重复队列

xiyanxy avatar Feb 14 '23 11:02 xiyanxy

难道是电脑的蓝牙5.2有额外提升延迟?添加了非重复输出时间,结果出现了低于1ms的间隔。。。。。

huhuime avatar Feb 14 '23 11:02 huhuime

不清楚了。看代码也优化不出来什么。

xiyanxy avatar Feb 14 '23 11:02 xiyanxy

不清楚了。看代码也优化不出来什么。

反复测试貌似直接吧方向传感器给干成了类似加速度的,停止运动就回归原位,估计调用这个udp协议的软件没用这些接口吧

huhuime avatar Feb 14 '23 13:02 huhuime