我正在编写的应用程序使用两个单独的lambda方法,以便从两个不同的传感器(每个传感器一个lambda)流式传输数据。每个传感器都会传输一个角度,我需要计算两者之间的绝对值。
简化版:
sensorFusion1.eulerAngles().addRouteAsync(source -> source.stream((data, env) -> {
//streaming data as a variable
EulerAngles angle1 = data.value(EulerAngles.class)
}
sensorFusion2.eulerAngles().addRouteAsync(source -> source.stream((data, env) -> {
//streaming data as a variable
EulerAngles angle2 = data.value(EulerAngles.class)
}
// Computations Between angle1 and angle 2 here (placeholder)
absangle= abs(angle1-angle2);
我遇到的问题是,根据我的理解,本地lambda变量需要有效最终,我的传感器数据不断变化。有没有办法可以实时访问传感器的当前值,以便在两个角度变量从传感器传递时进行计算?
非常感谢任何帮助!
答案 0 :(得分:0)
创建将保持角度的原子引用
AtomicReference<EulerAngles> angle1 = new AtomicReference<>();
AtomicReference<EulerAngles> angle2 = new AtomicReference<>();
sensorFusion1.eulerAngles().addRouteAsync(source -> source.stream((data, env) -> {
//streaming data as a variable
angle1.set(data.value(EulerAngles.class));
}
sensorFusion2.eulerAngles().addRouteAsync(source -> source.stream((data, env) -> {
//streaming data as a variable
angle2.set(data.value(EulerAngles.class));
}
absangle = abs(angle1 - angle2);
不要忘记检查angle1.get()
和angle2.get()
为空