该函数必须多次调用才能被接收

时间:2019-06-06 09:02:23

标签: c# unity3d

我有2个ant + USB记忆棒 1模拟一个可以共享数据的设备。 (模拟软件[SimuAnt]) 1模拟显示以显示数据。 (Windows PC统一应用程序)

一切正常,但只有一件事很奇怪。

我已经用Debug.Log检查了该函数是否已被真正调用。 我为此使用了一个按钮。

现在奇怪的是:当我单击按钮时,调试日志确认页面已发送到设备。 但我对设备没有任何影响。 当我快速单击按钮时,它有时会起作用。

当我在代码中调用该函数40次时,它起作用了。但是我认为这不是解决问题的正确方法。

public void SetTrainerResistance(int resistance) {
        if (!connected)
            return;
#if UNITY_ANDROID && !UNITY_EDITOR

        AndroidJNI.AttachCurrentThread();
        using (AndroidJavaClass javaClass = new AndroidJavaClass("com.ant.plugin.Ant_Connector")) {
            using (AndroidJavaObject activity = javaClass.GetStatic<AndroidJavaObject>("mContext")) {
                activity.Call("Set_fitness_Resistance",resistance);
            }
        }
#else
        pageToSend = new byte[8] { 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, (byte)(resistance * 2) };//unit is 0.50%
        deviceChannel.sendAcknowledgedData(pageToSend);
#endif

例如,我使用以下函数调用函数:

public void FitnessButton2() {
        GameObject.Find("FitnessEquipmentDisplay").GetComponent<FitnessEquipmentDisplay>().SetTrainerResistance(50);
    }

我尝试使用按键代替按钮,但是存在相同的问题。

完整的脚本也在这里: https://github.com/vrmedialab2017/SharkPrototype/blob/master/CubeTestVR/Assets/AdvancedAnt/Scripts/FitnessEquipmentDisplay.cs

我怀疑同步错误!?

有人对这种奇怪的东西有想法吗?

1 个答案:

答案 0 :(得分:0)

看来ant +设备的频率是关键。 我将更新的坡度发送到SimulationSoftware

但是蚂蚁设备的工作频率为4 Hz,所以如果再有一条消息通过,那就太幸运了。

现在我每1秒发送一次斜率(1 Hz) 所以我的按钮现在可以正常工作了