搜索
bottom↓
回复: 6

求教:用znFAT写SD卡

[复制链接]

出0入0汤圆

发表于 2012-2-6 12:01:06 | 显示全部楼层 |阅读模式
菜鸟学习读写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卡\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");
}
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-2-6 12:25:10 | 显示全部楼层
很多时候要靠自己去查,所以你应该找个好上手的,FATFS例子很多,这个什么FAT我了解的兴趣都没有。

出0入0汤圆

发表于 2012-2-6 12:27:59 | 显示全部楼层
另外的建议是不要操之过急,基础弄懂了再去研究。现在的开发板很浮躁啊,一个烂STC什么都往上挂,TFT,SD卡,VS1003...

出0入0汤圆

 楼主| 发表于 2012-2-6 15:47:53 | 显示全部楼层
请教
来自:虎纠 的长发姑娘:
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"?
  谢谢了。

出0入0汤圆

发表于 2012-2-6 18:54:12 | 显示全部楼层
如果是个定值,指针可以直接指向数组的

出0入0汤圆

发表于 2012-5-4 00:05:42 | 显示全部楼层
哇哇 找了好久这东西

出0入0汤圆

发表于 2012-5-22 18:01:20 | 显示全部楼层
发个消息 还需要设置头像  znfat 在4G卡的时候有点不对  修改后  能读能写 但还是觉得有问题
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 00:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表