求教:用znFAT写SD卡

2020-02-05 09:18发布

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

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

unsigned char Dev_No;  //设备号
struct znFAT_Init_Arg *pArg; //用于指针文件系统参数集合的指针
struct znFAT_Init_Arg Init_Arg_SDCARD;         //文件系统参数集合,用于记录文件系统的重要参数
struct FileInfoStruct FileInfo;                 //文件参数集合
unsigned char Create_Time[6]={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[0]=0x5C;aa[1]=0x5C; // 5C是 字符""          
   aa[2]=0x61;aa[3]=0x62;aa[4]=0x63;aa[5]=0x64;//0x61~64是a、b、c、d
   aa[6]=0x2E;aa[7]=0x74;aa[8]=0x78;aa[9]=0x74;//aa[6]~aa[9]是 .txt
   strcpy(ss,aa);                                 //希望ss转换成--  \abcd.txt  --这里对吗?  前面unsigned char *ss;对吗?         
//if(!znFAT_Create_File(&FileInfo,"\a\b\c\test.txt",Create_Time)) //在SD卡ac目录下创建test.txt文件  例子能成功
if(!znFAT_Create_File(&FileInfo,ss,Create_Time))                        //在SD卡根目录创建 abcd.txt 实际创建的文件名是乱码
{
  UART_Send_Str("创建文件成功 ");        //从串口输出文件参数信息
  UART_Send_Str("文件名为:");
  UART_Send_Str(FileInfo.FileName);
  UART_Send_Enter();
  ......
  ......
  ......失败 ");
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
wjhhh
2020-02-05 22:26
请教
来自:虎纠 的长发姑娘:
unsigned char *ss;   
unsigned char aa[20];  
   aa[0]=0x5C;aa[1]=0x5C;                      // 5C是 字符""     
   aa[2]=0x61;aa[3]=0x62;aa[4]=0x63;aa[5]=0x64;//0x61~64是a、b、c、d
   aa[6]=0x2E;aa[7]=0x74;aa[8]=0x78;aa[9]=0x74;//aa[6]~aa[9]是 .txt
   strcpy(ss,aa);                              //希望ss转换成   \abcd.txt 来替代包括两端双引号的 "\test.txt"

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

一周热门 更多>