gaofzhs 2022-08-18 18:40 采纳率: 100%
浏览 177
已结题

C#获取不断变化的数据

上位程序输出结果保存在一个txt中,一个数字(计数),一个型号(A,B,C),这个文本中的计数每隔数秒就会++(正常情况这个数字只增不减),然后每隔一段时间,型号会变,随着型号改变,计数会归零重记,每天0点也会归零。

下位程序要求,获取这个计数,并且根据类型统计每个型号当前小时总数。

卡在一个地方,就是当类型归零,我正在获取的计数也归零,因为我用了time控件定时去读取那个txt,他一个归零,我的统计就废了。希望求个思路。

补充一点,我开始接收数据时间随机,已经产生计数和型号随机。我是属于半路开始接收。

  • 写回答

8条回答 默认 最新

  • XX_YYDS 2022-08-19 10:14
    关注

    准备一个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>();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 已采纳回答 8月20日
  • 请采纳用户回复 8月20日
  • 赞助了问题酬金10元 8月18日
  • 展开全部

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用