stm32开发3D打印机(六)——使用FATFS文件系统读取打印文件 获取信息 执行转换 转换坐标(上)
这篇文章为读取打印文件(后缀为gcode的文件),并添加USMART功能调试
因为TFATFS移植与USMATRT没有什么好写的,而且在下方的链接:正点原子教程已经有详细的教程了,所以跳过了TATFS与USMART。
链接为:https://pan.baidu.com/s/1_S0394ZSRZaNxgz3QIbstA
提取码:6718
那么从这里,我们完成了对TF卡的初始化及其FATFS文件系统初始化。
现在我们可以调用FATFS内的函数。
首先我们需要知道如何打开文件,并读取文件的代码
- 首先对SD卡初始化,及上一篇的文章中的SD_Initialize(void)函数。
- 随后为FATFS申请内存,使用exfuns_init(void)函数。(其实不使用这个函数也是可以的,只不过这样可以整理内存)
- 挂载TF卡,使用f_mount(fs[0],“0:”,1)函数,函数内的相关变量,(是需要设定的,再正点原子教程有指出)。
- 挂载成功后便可使用FATFS库内的函数了。
但是还是借鉴正点原子的教程,使用正点原子封装好的一些函数。
如果完成了对FTAFS文件系统的初始化后,你会发现在工程文件中有fattester.c文件。
文件内有许多函数
函数名称 | 函数功能 |
---|---|
mf_scan_files | 遍历文件 (通过串口返回目录信息) |
mf_mount | 为磁盘注册工作区 |
mf_open | 打开目录下的文件 |
mf_close | 关闭文件 |
mf_read | 读取打开文件的数据 |
mf_write | 写入数据 |
mf_opendir | 打开目录 |
mf_closedir | 关闭目录 |
mf_readdir | 打开文件夹 |
mf_showfree | 显示剩余容量 |
差不多了,大概只需要使用这些
打开这个文件,你会发现这个函数
u8 mf_read(u16 len)
{u16 i,t;u8 res=0;u16 tlen=0;printf("\r\nRead file data is:\r\n");for(i=0;i<len/512;i++){res=f_read(file,fatbuf,512,&br);if(res){printf("Read Error:%d\r\n",res);break;}else{tlen+=br;for(t=0;t<br;t++)printf("%c",fatbuf[t]); }}if(len%512){res=f_read(file,fatbuf,len%512,&br);if(res) //¶ÁÊý¾Ý³ö´íÁË{printf("\r\nRead Error:%d\r\n",res); }else{tlen+=br;for(t=0;t<br;t++)printf("%c",fatbuf[t]); } }if(tlen)printf("\r\nReaded data len:%d\r\n",tlen);//¶Áµ½µÄÊý¾Ý³¤¶Èprintf("Read data over\r\n"); return res;
}
因为我们需要一个每次读取一个字节的函数,所以还是需要自己写一个读取函数。(注意在fattester.c文件下下下这个函数,因为需要使用该文件内的文件变量)
u8 zf_read(void)
{u16 i,t;u8 res=0;res=f_read(file,fatbuf,1,&br);if(res)printf("Read Error:%d\r\n",res);return *fatbuf;
}
并在fattester.h头文件声明,增加
u8 zf_read(void);
到此,我们完成了每次读取打开文件的一个字节的函数
在主函数中
完成初始化后,(对USMART初始化后及TF卡、FATFS初始化后)
在串口发送mf_scan_files(“0:”),则会返回目录信息
随后发送mf_open(“0:/aa1.gcode”,1);
打开aa1.gcode文件,随后便可使用函数mf_read读取,或者使用我们写的函数zf_read读取信息。
stm32开发3D打印机(六)——使用FATFS文件系统读取打印文件 获取信息 执行转换 转换坐标(上)相关推荐
- stm32开发3D打印机(二)——方向、相关资料链接
在这编文章里,我将写下3D打印机的相关资料链接和如何运作及之后写文章的大致方向 关于3D打印机(如何diy,零件的3D模型.Arduino源代码等等).写字机器人的资料等,是从多个地方收集,总而言之有 ...
- stm32开发3D打印机(三)——ADC热敏电阻测温、PWM控制(已完成)
3D打印机温度读取 ADC3初始化 主控芯片为stm32f407ZG,对ADC3初始化,精度设定为12位 ADC3代码部分 void init_adc3() /ADC3初始化 {GPIO_InitTy ...
- stm32开发3D打印机(五)——TF卡spi协议与FATFS文件系统(已完成)
借鉴于正点原子stm32 Mini板 下方的代码仅为对TF卡的初始化 FATFS移植方法请看正点原子Mini板教程,以及建议完成USMART的移植 因为TFATFS移植与USMATRT没有什么好写的, ...
- stm32开发3D打印机(零)——打印板配置(未完成)
对BIGTREETECH 的 SKR-PRO-V1.2的端口.定时器.中断等配置说明 板子如下图所示 板子相关资料在下方链接,下文就不全部截图了 链接:https://pan.baidu.com/s/ ...
- STM32挂载SD卡基于Fatfs文件系统读取文件信息
STM32挂载SD卡基于Fatfs文件系统读取文件信息
- [笔记]STM32基于HAL库的SDIO+FATFS文件系统
1.背景 要用到Bootloader升级,APP部分要写运行日志.所以在Bootloader部分的FATFS要做裁剪,裁剪到只剩只读的操作就可以了,而APP端做可读可写. 2.开发板 用的是野火的ST ...
- 机械手末端执行器设计,YA32_1000KN四柱万能液压机设计,3D打印机,健身跑步机设计模型,摆动活塞式发动机的结构设计,手机上盖注塑模具设计与仿真加工,汽车防误踏油门机构的设计……
顶升移载输送机SW 机械手 机械手末端执行器设计模型 机械手 凸轮驱动机构 升降机 机床设计 飞机02 YA32_1000KN四柱万能液压机设计(毕业论文+CAD图纸) 同步带及顶升机构 焊接成型机架 ...
- postek二次开发_20190626_二次开发BarTender打印机_C#代码_一边读取TID_一边打印_打印机POSTEK...
demo代码如下: private void btnPrint_Click(object sender, EventArgs e) { if (this.btnPrint.Text == " ...
- 20190626_二次开发BarTender打印机_C#代码_一边读取TID_一边打印_打印机POSTEK
demo代码如下: private void btnPrint_Click(object sender, EventArgs e){if (this.btnPrint.Text == "停止 ...
最新文章
- HDOJ 1214 圆桌会议
- Meanshift图像平滑之opencv实现
- 天津科技大学 物理实验平台使用教程及相关问题
- 这是mac 重置mysql 的三种做法
- [html] html如何创建图片热区(img usemap)?
- Java中的变量数据类型补充
- PHP中基本符号及使用方法
- 创建线程的两种方式:继承Thread类和实现Runnable接口
- 三星s20计算机怎么添加到桌面,三星s20+怎么分屏?三星s20系列多窗口分屏设置操作步骤...
- Hadoop工具让数据仓库迁移更轻松
- 数字电路基础知识——锁存器与触发器在Verilog中使用问题
- elasticsearch整体结构示意图
- python有道翻译
- JAVA计算机毕业设计政府会议管理系统Mybatis+系统+数据库+调试部署
- 希腊女孩创办自媒体教希腊语,如今用户已达1000人
- 微信图片太模糊如何弄清晰?微信图片过期怎么恢复原图
- 为什么不建议你吃精致碳水,这里有你需要的答案
- C语言函数嵌套定义问题
- QT mainwindow.ui: Warning: The name ‘layoutWidget‘ (QWidget) is already in use, defaulting to ‘layou
- 计算机网络设备装配调试员职业技能鉴定试卷,计算机装配调试员技师应知试卷(B)附答案...
热门文章
- 破解公私域流量割裂难题 京东营销云有新招
- 采用用计算机及条形码技术的是什么,条码技术在计算机应用与实践
- 动态SQL( if, choose, when, otherwise, trim, where, set, foreach标签讲解)
- Web缓存机制(浏览器缓存 CDN缓存 DNS缓存)
- 【数据结构(郝斌)】03线性结构-栈
- 浏览器缓存(强缓存和协商缓存)
- 如何运营好游戏平台和提高玩家留存?
- android6.1内存,iPhone 6为何坚持1GB内存?安卓太坑爹!
- 游戏设计行业应该选哪一块去学习,然后就业?哪个前景更好
- 100亿数据找出最大的1000个数字的4种方法