一起学CC3200系列教程之文件操作

阿汤哥

序:

能力有限,难免有错,有问题请联系我,请留言或者邮件联系,

qq群交流482729453 邮件联系hytga@163.com

Pdf下载

QQ群目前是只有我一个人,有问题或者啥的请最好留言,这样别人也才能看到的,不然有时候一个问题讲两遍的话,会很伤神。

文件操作的头文件是 fs.h

简介:TI提供的文件操作的API有以下特点

1、文件路径,你用unnflash下载就需要一个文件名

2、文件权限,读写

3、文件句柄,很像linux的文件操作

4、文件安全:目前这个还没有实现

5、文件是保存在外部的flash。文件是断电后还是会存在的,cc3200目前就我了解,所有的信息都是存在外部的flash

例程简介:我就写了几个函数简单地测试了文件创建,文件写,文件读。1、使用api创建文件,并进行读写,这个你需要自己屏蔽部分函数(创建。写,读函数,这样你就能看到特点了)。2、使用uniflash烧文件,并进行读。其他的需要你自己玩了。

目前发现的问题:文件如果存在的话,文件还是能创建成功的,并且会把原有的信息给删掉。请注意根据我的测试这个可能是官方的bug,或者是我少设置了啥?

注意点:需要调用这个函数sl_Start(NULL, NULL, NULL);不然会死在api里。这点我也是想不通,sl我一直觉得是网络才需要的,没想到文件操作也需要这个.

文件的创建方式:1、通过api调用

2、 用uniflash烧写进去,

截图:

1 打印信息

2、unfilash

3、uniflash。txt也就是我们的FileTest。c的文件内容

代码:

#include "FileTest.h"char FileCreateTest(char *fileName, unsigned long *ulToken) {long lRetVal = -1;int iLoopCnt = 0;long lFileHandle;UART_PRINT("start create file \r\n");//创建文件//文件名,//FS_MODE_OPEN_CREATE这个用来表明文件的属性的,//1024是文件长度//_FS_FILE_OPEN_FLAG_COMMIT这个不懂。。。//_FS_FILE_PUBLIC_WRITE是具有写的特性//ulToken目前没用//lFileHandle文件句柄,供给其他(读写)函数使用lRetVal = sl_FsOpen((unsigned char *) fileName,FS_MODE_OPEN_CREATE(1024,_FS_FILE_OPEN_FLAG_COMMIT | _FS_FILE_PUBLIC_WRITE), ulToken,&lFileHandle);if (lRetVal < 0) {UART_PRINT("create file error \r\n");//// File may already be created//lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);} else {UART_PRINT("ulToken is %d \r\n", *ulToken);UART_PRINT("create file succcess \r\n");//// 关闭文件//lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);if (SL_RET_CODE_OK != lRetVal) {}}UART_PRINT("end create file \r\n");return 0;}char FileReadTest(char *fileName, unsigned long *ulToken, char *buf, int bufLen) {long lRetVal = -1;int iLoopCnt = 0;long lFileHandle;//打开一文件,以只可以读的方式打开lRetVal = sl_FsOpen((unsigned char *) fileName,FS_MODE_OPEN_READ, ulToken, &lFileHandle);if (lRetVal < 0) {lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);UART_PRINT("FileReadTest sl_FsOpen is error \r\n");} else {UART_PRINT("FileReadTest sl_FsOpen is success \r\n");}//读数据到缓冲区。返回值就是读取到的数据大小,小于0就是错误//lFileHandle文件句柄//0 文件光标的偏移量,,详解:把文件看成是一个数组,那么这个相当于索引号//buf缓冲区//buflen 缓冲区的大小lRetVal = sl_FsRead(lFileHandle, 0, buf, bufLen);if ((lRetVal < 0) || (lRetVal != bufLen)) {lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);UART_PRINT("FileReadTest sl_FsRead is error \r\n");} else {UART_PRINT("FileReadTest sl_FsRead is success \r\n");UART_PRINT("%s \r\n", buf);}//// 关闭文件//lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);if (SL_RET_CODE_OK != lRetVal) {UART_PRINT("FileReadTest sl_FsClose is error \r\n");}return SUCCESS;}char FileWriteTest(char *fileName, unsigned long *ulToken, char *data,int dataLen) {long lRetVal = -1;int iLoopCnt = 0;long lFileHandle;//以写的方式打开一个文件lRetVal = sl_FsOpen((unsigned char *) fileName,FS_MODE_OPEN_WRITE, ulToken, &lFileHandle);if (lRetVal < 0) {lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);UART_PRINT("sl_FsOpen is error \r\n");} else {UART_PRINT("sl_FsOpen is success \r\n");}//写一个数据到一个文件//lFileHandle文件句柄//0 文件光标的偏移量,详解:把文件看成是一个数组,那么这个相当于索引号//data数据//dataLen 数据长度lRetVal = sl_FsWrite(lFileHandle, 0, (unsigned char *) data, dataLen);if (lRetVal < 0) {lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);UART_PRINT("sl_FsWrite is error \r\n");} else {UART_PRINT("sl_FsWrite is success \r\n");}//// close the user file//lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);if (SL_RET_CODE_OK != lRetVal) {UART_PRINT("sl_FsClose is error \r\n");} else {UART_PRINT("sl_FsClose is success \r\n");}}void uniFlash_Test_txt_Read(void) {unsigned long ulToken = 9;char data[80];FileReadTest("uniFlash_Test.txt", &ulToken, data, 80);}void vFileTestTask(void *pvParameters) {long lRetVal = -1;unsigned long ulToken = 9;char data[80];//这个相当重要,需要先打开,我也不知道原因lRetVal = sl_Start(NULL, NULL, NULL);if (lRetVal < 0) {UART_PRINT("open sl is error \r\n");LOOP_FOREVER();}//创建一个文件,//文件名,第二个参数目前 没用FileCreateTest("test.txt", &ulToken);//写入数据到文件,第二个参数没用,数据,数据长度FileWriteTest("test.txt", &ulToken, "TEST", sizeof("TEST"));//从文件读取数据,第二个参数没用,数据缓冲区,数据缓冲区长度FileReadTest("test.txt", &ulToken, data, 5);//测试uniflash烧录文件到cc3200,用api读取。uniFlash_Test_txt_Read();while (1) {}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

当你感到悲哀痛苦时,最好是去学些什么东西。

一起学CC3200系列教程之文件操作

相关文章:

你感兴趣的文章:

标签云: