程序里要把采集的温度数据写到SD卡里,温度数据已经放在temperature变量;
u16 temperature;
res=f_open (&fil,"0:/test.txt", FA_CREATE_ALWAYS|FA_WRITE);
f_write (&fil,&temperature, sizeof(temperature)-1, &bww);
f_close(&fil);
但是写到sd里的数据有问题,不是temperature变量里的内容,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
f_write(&fil,&temperature, 2, &bww);
这样写进去sd'卡里只有一个0,程序里是想2s写一次,连续写数据实现不了
你写入是个16进制数,你用文本文件的形式打开,能看到个0很正常,除非你写入的是个字符串,想查看16进制数是否写入成功,你应该用程序去读取它,然后打印出来才对。还有,在进行16进制的数据读写时,先用个普通的字符串做下读写测试,如果没问题,再进行16进制数的读写。
那就一直写啊,反正你每个数据的长度都是固定的,读取的时候可以都读出来,然后每2个字节算一个数据,就行了。还有个方法,就是可以将16进制数据转换成字符串的形式写入txt中,然后每个数据直接以一个特殊的字符做间隔符,比如空格或逗号啥的,这样可以防止在16进制的情况下因数据写入错误而导致数据位移,提高数据存储的正确率,当然,如果你想直接在16进制数的后面加个分隔符,我建议不要这么做,因为你很难保证这个数据和间隔符不会一样。
f_printf (&fil,"temp = %d", temperature);
谢谢
一周热门 更多>