菜鸟学习读写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();
......
......
......失败
");
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
来自:虎纠 的长发姑娘:
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"?
谢谢了。
一周热门 更多>