stm32F103原点战舰开发板,SD卡读取txt里面的坐标数据笔记

实验步骤。
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;

}

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值