实验步骤。
1、首先利用原点的fatfs例子。先不学习移植。后面有时间再移植。
2、在SD卡中,建立1.txt文本文件;
在里面输入数据:注意格式,本次实验需要这么才能正确读写文本的数据;不然读取会部分出错。
错误的写法也写下:
文本中,写入
23.56,89.35,(回车换行)
68.23,25.00,(回车换行)
85.36,54.24,(回车换行)
在这里输入的方法里面,如若用后面的程序读,会得到数据,但是在回车换行那里,得到0.005,原来的数据68.23,85.36会出错,转换不出来。
由于时间较为紧迫。因此没有深究里面的原因。
第二次,把文本的数据格式,改为
25.36,89.35,68.23,25,85.36,54.24,
连续的数字,就能读出来。注意这个逗号必须要有,这里的数据用逗号进行分割。

3、利用f_open进行打开文件;
4、利用f_read进行读取里面的文件;放在ReadBuf内存空间中;会返回一个读取的字节的数据,得到里面的数据的字节长度;给后面的循坏使用;然后关闭文件。
5、网上查找例子,如何将文本,逗号隔开的,取出来。
然后将每个坐标放在一个字符数组里面。
j=0;mm=0;
for(iii=0;iii<br0;iii++)
{
delay_ms(5);
//如果是遇到的不是逗号,就一个个字符放到str99里面。
if(ReadBuf[iii]!=’,’)
{ LCD_ShowString(30,170,200,16,16,"1234"); str99[j]=ReadBuf[iii];
sprintf((char*)tbuf,"%s",str99); LCD_ShowString(30,210,210,16,16,tbuf);
delay_ms(1000); LCD_Clear(WHITE); j++; }
//如果遇到一个逗号,说明一个数结束,将该数转换成double.然后放到doublexy中。将str99清空,给下一个小数空出地方。 else
if(ReadBuf[iii]==',')//读取到一个字符数组;放到里面。把字符数组,变为浮点数 {
LCD_ShowString(30,170,200,16,16,"ef0f"); doublexy[mm]=StrToDouble(str99); mm++;
memset(str99,0,sizeof(str99)); j=0; } }
6、转换成double之后,将奇数放到xx坐标的数组,偶数放到yy坐标的数组。
ttt=0;ggg=0;
for(iii=0;iii<br0;iii++)
{
if(iii%2==0)//偶数,放到x坐标
{xx[ttt]=doublexy[iii];ttt++; }
else
{ yy[ggg]=doublexy[iii];ggg++;}
}
7、可以循环打印,看下读取的数据是不是成功;
for(iii=0;iii<br0/12;iii++)
{
sprintf((char*)tbuf,“xx:%.2f”,xx[iii]);
LCD_ShowString(30,210,210,16,16,tbuf);
delay_ms(1000);
LCD_Clear(WHITE);
}
for(iii=0;iii<br0/12;iii++) { sprintf((char*)tbuf,"yy:%.2f",yy[iii]);
LCD_ShowString(30,210,210,16,16,tbuf); delay_ms(1000); LCD_Clear(WHITE); }
8、这个字符串转换成浮点数的程序,是在网上找的,在devc++中实验,可以用。后移植到stm32本程序中,具体原理后面再琢磨。
//字符串转double
double StrToDouble(char *s)
{
int i = 0;
int k = 0;
double j;
int flag =1;
double result = 0.0;
if (s == NULL)
{
// printf(“输入字符串为空”);
// exit(-1);
return 0;
} while (s[i] == ' ') { i++; } if (s[i] == '+') { i++; } if (s[i] == '-') {
i++; flag = -1; } while (s[i] != '\0' && s[i] != '.') { if (s[i] < '0' || s[i]
> '9') { // printf("字串含有非数字字符,无法转换!\n"); return 0; // exit(-1); } j = (s[i] -
'0')*1.0; result = result * 10 + j; if((result>0x7fffffff)) { return 0; } i++;
} if (s[i] == '.') { i++; while (s[i] != '\0') { if (s[i] < '0' || s[i] > '9')
{ //printf("字串含有非数字字符,无法转换!\n"); return 0; } k++; j = s[i] - '0'; result =
result + (1.0 * j) / pow(10.0, k); //编译时候此处有警告 i++; } } result = flag * result;
return result;
}

技术
©2019-2020 Toolsou All rights reserved,
python获取excel的一列或者一行的数据Golang数组平分,数组拆分,数组分组JQ get请求 拼接 url 参数 (查询条件) 艾伟也谈项目管理,基层管理杂谈Vue + Element-ui的下拉框el-select获取额外参数rk3399_android7.1调试USB蓝牙模块小结(精华)2020年6月26日 C#类库 日志帮助类python中switch_to_alert的用法使用VS2019 “Windows桌面应用程序”模块创建Win32窗口python 中的短路逻辑