准备一个List,将数据的变化情况记录在List里面,因为你也提到了,需要分型号统计每个小时的计数,所以List里面也需要存一下时间信息的。
先准备个数据模型类,存储你的计数开始时间,停止时间,型号和计数数值,加在List里面,作为List的模板记录用,在用户点击界面上的按钮,查看每小时的数据时,这时根据List里的记录再来算。
具体在什么时候向List加数据,我建议在每次读到型号改变时,将上次的数据加在List里面(用来记录上次的型号和计数),然后采集这时的时间,作为上次数据的结束时间和下次数据的开始时间。
其次你提到的0点会重置,并且要算每个小时的数据,所以整点时肯定也需要记录一次的。
最后说说怎么算这个每小时的计数值,筛选出List中,起始时间和终止时间都在这个小时时间范围内的数据,这时List中大概是这样的:
list[0] starttime:2022/8/19 10:00:00 endtime:2022/8/19 10:05:23 nums:50 xinghao:A
list[1] starttime:2022/8/19 10:05:23 endtime:2022/8/19 10:12:56 nums:28 xinghao:B
list[2] starttime:2022/8/19 10:12:56 endtime:2022/8/19 10:25:33 nums:70 xinghao:C
..............
list[n] starttime:2022/8/19 10:56:02 endtime:2022/8/19 11:00:00 nums:21 xinghao:A
需要注意的是,list[0]中是由于整点采集进行人工截断的数据,计数值很可能包含上一小时的一部分,以上面的数据为例,需要找到以 2022/8/19 10:00:00 结尾的那笔数据的计数,然后用list[0]中的数值50减去这个数,就能得到真实数值,最后直接遍历list,把相同类型的数值加起来就好了。
//数据模型大概像这样
public class Data()
{
//计数开始时间
//计数停止时间
//计数数值
//型号
}
//然后List像这样
List<Data> list=new List<Data>();