保持微笑 发表于 2022-4-21 14:44 不用真的都读一遍啊,你的格式碰巧就是定长的,移到相关的那一行就行啦,不过肯定比内存慢得多了。 |
glinfei 发表于 2022-4-18 16:00 实际上这个办法我早已经尝试,我最后用的也是全部读取查找序号的方法搞定的,就是读取到比较大一点的数据的时候就会慢一点,同时也非常感谢你的答复 |
yzwzfyz 发表于 2022-4-19 15:19 按照大佬的说法不是没什么道理,储存的CSV大小无所谓的,至于什么数据是必须这样存,有要求的 |
glinfei 发表于 2022-4-19 11:38 是不知道怎么读取出来,不知道怎么走指定的位置开始读取,比如我要走第20行,然后就只读取第20行的内容就可以了 |
1、研透CVS文件的格式 2、规划一个缓冲缓存一两行数。(用于暂存一行数据,并转换成存储格式,以便写入存储区) 3、规划一个存储存区,用于保存所有CVS文件,但格式可能不同(由你定)。 4、规划存储格式。想节省空间,程序就复杂。程序简单了,存储空间损耗就大。 这个最重要!体现你的建仓能力。例如:日期时间如何存储,打算用几个字节存它,年存何处?秒存何处?用10进制还是16进制?照本宣科来什么存什么?要不要考虑节省空间?如何区分一个数据的开始与结束?…… 这些你要事先写个【协议】,以便后期使用时准确解之。 【协议】妥了,再写程序就胸有成竹了。 |
你目前问题是它过度消耗单片机内存吧?主要原因是按字符读取的,没改成数字存储,csv好处是定长了,应该每读取一行,就尽量转成数字后再挂到链表上,剔除没用的单位等,就会节约很多内存了。 |
yzwzfyz 发表于 2022-4-19 09:11 我现在的问题是,我的单片机要将这个CSV数据读取出来,EXCE电脑端啊,我是要下位机也要读取出来啊 |
我是用excel读、写、编辑CVS文件的。 |
保持微笑 发表于 2022-4-20 08:20 我昨天理解错你要求了。我认为有个简单办法,CSV每行是“回车”结尾,你一个一个读,读到它就是一行,但这个有点慢;我建议的是,因为你每行是一样长的,你就直接写个struct,然后(这个构造的长度加一)*行数就是位置啊(加一因为有个回车)。 |