1-大数据量不要搞什么文本格式了,直接二进制保存;
2-程序启动就分配好N个同样大小的数组(N>=2),USB驱动写满一个数组后,设一个标志位,然后写下一个数组……另起一个线程,判断标志位有效,则将相应的数组一次写入文件……
但对于你这么低的速度,完全可以像5楼说的那样,根据数据的特点,把数据处理压缩一……用一个字节表示查分值有点浪费了,你可以先编个小程序统计一下90%以上的数据差分值是多少……假设90%以上的差值小于7,那么用4个bit表示就够了。定义存储结构如下:
typedef struct
{
u16 FirstValue;//本存储块的ADC基值
u16 num;//本存储块有多少个(最大65535+1=64KB)ADC采样值
// u8 DiffBits;//还可以动态定义本数据块的差分值需要占用多少bit
u8 buff[n];//比特流。n <= (num*DiffBits/8+1)。所以尽量使DiffBits优化为最小值,这样存储效率较高
}DatBlockStruct;
文件结构:
DatBlockStruct dat1,DatBlockStruct dat12,DatBlockStruct dat13……
|