wjhhh 发表于 2012-2-6 12:01:06

求教:用znFAT写SD卡

菜鸟学习读写SD卡,遇到难题:找到的例子都是在程序里已经设定好固定的文件名(和写入的数据内容),想用变量例如某年月日时分秒(或接收串口字符)作文件名。现在还不会指针之类,程序不能用。请各位指教。
    谢谢
#include "uart.h"
#include "myfun.h"
#include "znFAT.h"
#include "string.h"

#include <STC_NEW_8051.H>
/** 振南电子 高级外设测试 之深层目录下创建文件   ***********/
        unsigned char *ss;    //自己添改的
        unsigned char aa; //自己添改的

unsigned char Dev_No;//设备号
struct znFAT_Init_Arg *pArg; //用于指针文件系统参数集合的指针
struct znFAT_Init_Arg Init_Arg_SDCARD;       //文件系统参数集合,用于记录文件系统的重要参数
struct FileInfoStruct FileInfo;               //文件参数集合
unsigned char Create_Time={10,4,26,23,6,50};       //文件的创建时间

void main()
{
P4SW=0x72;       
P1M1 |=0x40;//01000000B;P1_5 P1_7 设置为强推挽模式 P1_6 设置为高阻输入模式
P1M0 |=0xA0;//10100000B;
P4M1 |=0x00;//00000000B;P4_3 设置为强推挽模式片选       
P4M0 |=0x08;//00001000B;                       
UART_Init(); //串口初始化
pArg=&Init_Arg_SDCARD;       //指针指向SD卡文件系统参数集合,znFAT将从这个集合中获取参数
Dev_No=SDCARD;       //设备号为SDCARD,znFAT依照此设备号选择存储设备驱动
znFAT_Device_Init();//存储设备初始化
znFAT_Init(); //文件系统初始化
// UART_Put_Inf("总存储容量:(字节)",pArg->Total_Size); //从串口输出各种参数信息
// UART_Put_Inf("每扇区字节:(个)",pArg->BytesPerSector);
// UART_Put_Inf("每簇扇区:(个)",pArg->SectorsPerClust);
/* ***自己添改的** */
   aa=0x5C;aa=0x5C; // 5C是 字符"\"          
   aa=0x61;aa=0x62;aa=0x63;aa=0x64;//0x61~64是a、b、c、d
   aa=0x2E;aa=0x74;aa=0x78;aa=0x74;//aa~aa是 .txt
   strcpy(ss,aa);                               //希望ss转换成--\\abcd.txt--这里对吗?前面unsigned char *ss;对吗?       
//if(!znFAT_Create_File(&FileInfo,"\\a\\b\\c\\test.txt",Create_Time)) //在SD卡\a\b\c\目录下创建test.txt文件例子能成功
if(!znFAT_Create_File(&FileInfo,ss,Create_Time))                      //在SD卡根目录创建 abcd.txt 实际创建的文件名是乱码
{
UART_Send_Str("创建文件成功\n");        //从串口输出文件参数信息
UART_Send_Str("文件名为:");
UART_Send_Str(FileInfo.FileName);
UART_Send_Enter();
......
......
......失败\n");
}
}

Rapido 发表于 2012-2-6 12:25:10

很多时候要靠自己去查,所以你应该找个好上手的,FATFS例子很多,这个什么FAT我了解的兴趣都没有。

Rapido 发表于 2012-2-6 12:27:59

另外的建议是不要操之过急,基础弄懂了再去研究。现在的开发板很浮躁啊,一个烂STC什么都往上挂,TFT,SD卡,VS1003...

wjhhh 发表于 2012-2-6 15:47:53

请教
来自:虎纠 的长发姑娘:
unsigned char *ss;   
unsigned char aa;
   aa=0x5C;aa=0x5C;                      // 5C是 字符"\"   
   aa=0x61;aa=0x62;aa=0x63;aa=0x64;//0x61~64是a、b、c、d
   aa=0x2E;aa=0x74;aa=0x78;aa=0x74;//aa~aa是 .txt
   strcpy(ss,aa);                              //希望ss转换成   \\abcd.txt 来替代包括两端双引号的 "\\test.txt"

这样语法、逻辑对吗?怎样才能替代 "\\test.txt"?
谢谢了。

jlhgold 发表于 2012-2-6 18:54:12

如果是个定值,指针可以直接指向数组的

yy434722402 发表于 2012-5-4 00:05:42

哇哇 找了好久这东西

superduck 发表于 2012-5-22 18:01:20

发个消息 还需要设置头像znfat 在4G卡的时候有点不对修改后能读能写 但还是觉得有问题
页: [1]
查看完整版本: 求教:用znFAT写SD卡