我有一个小型应用程序可以连续读取称重秤。
我希望用户只在体重稳定约3秒时捕捉。
我怎样才能做到这一点?
答案 0 :(得分:0)
您需要将接收到的值与时间戳存储在队列中,然后计算过去三秒内的最小值,最大值和平均值。
首先创建一个类来保存值和时间戳,例如称为度量。
然后使用qqeue of measure创建另一个类。实现将度量添加到类内部队列并计算时间跨度的最小值,最大值和平均值的函数。然后,最终函数可以使用min,max和average来说明最后一个度量是否足够接近时间跨度内的平均值。
您可以使用数据表代替队列,然后使用sql命令获取最小值,最大值和平均值的标量。
如果值之间以恒定间隔传递,则可以避免使用时间跨度部分,并仅计算最后x个值。例如,如果比例每0.5秒传递一个新值,则最后三秒将有6个值。
FIFO将存储值(使用带有自定义添加功能或队列的数组)。要知道最后的值是否稳定,您需要知道最后一个度量的最小值,最大值和平均值。这使您可以确定最后一个值是否接近平均值,或者差异是否达到最大值和最大值。
即措施:
3 4 8 2 5 4给出min = 2,max = 8,avg = 4.3。最后一个val接近平均值但远离最大值
5 4 6 4 5 5给出min = 4,max = 6,avg = 4.9,最后一个值接近min,max和avg。这似乎是一个很好的最后措施。