• bqt
    了解作者
  • C/C++
    开发工具
  • 28KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 118
    下载次数
  • 2006-07-12 07:33
    上传日期
一个U盘的文件系统源代码!!!C语言编写,推荐下载
UDISK_SOURCE.rar
  • SOFT0607
  • HPI.C
    21.2KB
  • RBCCMD.H
    14.6KB
  • Fat.c
    6.3KB
  • SL811.H
    7.4KB
  • TPBULK.H
    1.8KB
  • ISR.C
    4.5KB
  • HAL.H
    1.6KB
  • HPI.H
    6.9KB
  • HAL.C
    2.1KB
  • TPBULK.C
    7.3KB
  • Fat.h
    1.3KB
  • AT89X52.H
    6.4KB
  • COMMON.H
    2.8KB
  • SL811.C
    17KB
  • MAIN.C
    4.3KB
  • www.pudn.com.txt
    218B
内容介绍
/*******************************Copyright (c)*************************************** 桑海为实业发展有限公司 自 动 化 钢 琴 研 究 所 http://www.pianoshw.com E-mail:shw@pianoshw.com ----------------------------------文件信息------------------------------------------- 文 件 名 : HPI.C 创 建 人 : 吴应斌 创 建 日 期: 2004-6-7 9:30 功 能 描 述: SL811人机接口文件 ************************************************************************************/ #include <COMMON.H> #include <TPBULK.H> #include <HPI.H> #include <HAL.H> #include <FAT.H> extern XXGFLAGS bdata bXXGFlags; extern unsigned char xdata DBUF[BUFFER_LENGTH]; unsigned char xdata UARTBUF[UARTBUF_LENGTH]; SYS_INFO_BLOCK xdata DeviceInfo; UART_CMD_BLOCK xdata UartCmdBlock; UART_RSP_BLOCK xdata UartRspBlock; FILE_INFO xdata ThisFile; extern FREE_FAT_INFO xdata FreeFat; void UartSendRsp(void) { unsigned int i; unsigned char *pBuf=(unsigned char *)&UartRspBlock; for(i=0;i<64;i++) ComSendByte(*(pBuf+i)); if(UartRspBlock.len!=0) { for(i=0;i<UartRspBlock.len;i++) ComSendByte(*(UartRspBlock.pbuffer+i)); } } /*----------------------------------------------------------------------------------- 名称: void UartHandler(void) 功能: Uart命令管理. -----------------------------------------------------------------------------------*/ void UartHandler(void) { unsigned char retStatus; unsigned int len; unsigned long pointer; UartRspBlock.errcode=ERC_OK; UartRspBlock.len=0; switch(UartCmdBlock.cmd) { case CMD_RESET: break; case CMD_DETECT_DEVICE: ThisFile.bFileOpen=0; retStatus=DetectDevice(); UartRspBlock.cmd=CMD_DETECT_DEVICE_RSP; break; case CMD_OPEN_FILE: retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename); UartRspBlock.cmd=CMD_OPEN_FILE_RSP; break; case CMD_CREATE_FILE: retStatus=OpenFile(UartCmdBlock.CmdBlock.Cmd_OpenFile.filename); if(UartRspBlock.errcode==ERC_FILENOTFOUND) { retStatus=CreateFile(UartCmdBlock.CmdBlock.Cmd_CreateFile.item); } UartRspBlock.cmd=CMD_CREATE_FILE_RSP; break; case CMD_READ_FILE: len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_ReadFile.readLength); retStatus=ReadFile(len,UARTBUF); UartRspBlock.cmd=CMD_READ_FILE_RSP; break; case CMD_WRITE_FILE: len=SwapINT16(UartCmdBlock.CmdBlock.Cmd_WriteFile.writeLength); retStatus=WriteFile(len,UARTBUF); UartRspBlock.cmd=CMD_WRITE_FILE_RSP; break; case CMD_LIST: ThisFile.bFileOpen=0; retStatus=List(); UartRspBlock.cmd=CMD_LIST_RSP; break; case CMD_REMOVE_FILE: ThisFile.bFileOpen=0; retStatus=RemoveFile(UartCmdBlock.CmdBlock.Cmd_RemoveFile.filename); UartRspBlock.cmd=CMD_REMOVE_FILE_RSP; break; case CMD_GET_CAPACITY: ThisFile.bFileOpen=0; retStatus=GetCapacity(); UartRspBlock.cmd=CMD_GET_CAPACITY_RSP; break; case CMD_GET_FREE_CAPACITY: ThisFile.bFileOpen=0; retStatus=GetFreeCapacity(); UartRspBlock.cmd=CMD_GET_FREE_CAPACITY_RSP; break; case CMD_SET_FILE_POINTER: pointer=SwapINT32(UartCmdBlock.CmdBlock.Cmd_SetFilePointer.pointer); retStatus=SetFilePointer(pointer); UartRspBlock.cmd=CMD_SET_FILE_POINTER_RSP; break; case CMD_GET_VERSION: ThisFile.bFileOpen=0; retStatus=GetFirmwareVersion(); UartRspBlock.cmd=CMD_GET_VERSION_RSP; break; default: bXXGFlags.bits.bCOM_ERR=1; break; } UartRspBlock.result=retStatus; UartRspBlock.pbuffer=UARTBUF; UartSendRsp(); } /*----------------------------------------------------------------------------------- 名称: unsigned char DetectDevice(void) 功能: 磁盘有无检测. -----------------------------------------------------------------------------------*/ unsigned char DetectDevice(void) { #define RspBlockDetectDevice UartRspBlock.RspBlock.Rsp_DetectDevice return bXXGFlags.bits.SLAVE_IS_ATTACHED; #undef RspBlockDetectDevice } /*----------------------------------------------------------------------------------- 名称: unsigned char List(void) 功能: 列出目录中所有文件. -----------------------------------------------------------------------------------*/ unsigned char List(void) { #define RspBlockList UartRspBlock.RspBlock.Rsp_List unsigned int item,i; unsigned char j,k,bstop,sector; if(!bXXGFlags.bits.SLAVE_IS_ATTACHED) { UartRspBlock.errcode=ERC_NODEVICE; return FALSE; } item=0; bstop=0; for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++) { if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF)) { UartRspBlock.errcode=ERC_DEVICEERR; return FALSE; } for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32) { if(DBUF[i]==0x00) { bstop=1; break; } else if(DBUF[i]==0xE5) continue; else if((DBUF[i]&0x40==0x40)&&(DBUF[i+11]==0xff)) { j=DBUF[i]&0x0F; j=j+1; for(k=0;k<j*32;k++) UARTBUF[item*32+k]=DBUF[i+k]; i=i+(j-1)*32; item=item+j; } else { for(k=0;k<32;k++) UARTBUF[item*32+k]=DBUF[i+k]; item=item+1; } } if(bstop==1) break; } RspBlockList.len=SwapINT16(item*32); UartRspBlock.len=item*32; return TRUE; #undef RspBlockList } /*----------------------------------------------------------------------------------- 名称: unsigned char OpenFile(unsigned char *pBuffer) 功能: 打开文件. -----------------------------------------------------------------------------------*/ unsigned char OpenFile(unsigned char *pBuffer) { #define RspBlockOpenFile UartRspBlock.RspBlock.Rsp_OpenFile unsigned int i; unsigned char j,bstop,sector; PDIR_INFO pDirInfo; if(!bXXGFlags.bits.SLAVE_IS_ATTACHED) { UartRspBlock.errcode=ERC_NODEVICE; return FALSE; } ThisFile.bFileOpen=0; for(sector=0;sector<DeviceInfo.BPB_RootEntCnt;sector++) { if(!RBC_Read(DeviceInfo.RootStartSector+sector,1,DBUF)) { UartRspBlock.errcode=ERC_DEVICEERR; return FALSE; } for(i=0;i<DeviceInfo.BPB_BytesPerSec;i=i+32) { if(DBUF[i]==0x00) { UartRspBlock.errcode=ERC_FILENOTFOUND; return FALSE; } j=0; while(DBUF[i+j]==*(pBuffer+j)) { j=j+1; if(j>10) break; } if(j>10) { for(j=0;j<32;j++) RspBlockOpenFile.item[j]=DBUF[i+j]; ThisFile.bFileOpen=1; bstop=1; break; } } if(bstop==1) break; } if(sector>=DeviceInfo.BPB_RootEntCnt) { UartRspBlock.errcode=ERC_FILENOTFOUND; return FALSE; } pDirInfo=(PDIR_INFO)RspBlockOpenFile.item; ThisFile.StartCluster=SwapINT16(pDirInfo->startCluster); ThisFile.LengthInByte=SwapINT32(pDirInfo->length); ThisFile.ClusterPointer=ThisFile.StartCluster; ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.StartCluster); ThisFile.OffsetofSector=0; ThisFile.SectorofCluster=0; ThisFile.FatSectorPointer=0; ThisFile.pointer=0; FreeFat.SectorNum=DeviceInfo.FatStartSector; FreeFat.OldSectorNum=DeviceInfo.FatStartSector; FreeFat.OffsetofSector=2; return TRUE; #undef RspBlockOpenFile } /*----------------------------------------------------------------------------------- 名称: unsigned char ReadFile(unsigned int readLength,unsigned char *pBuffer) 功能: 读取文件. -----------------------------------------------------------------------------------*/ unsigned char ReadFile(unsigned int readLength,unsigned char *pBuffer) { #define RspBlockRea
评论
    相关推荐
    • 易语言U盘文件复制
      易语言U盘文件复制源码系统结构:文件列表,CopyFile,取路径文件名,取路径扩展名,MsgProc,GetTextAddress,GetLogicalDriveStrings,FindFirstFile,FindNextFile,FindClose,PathFindExtension,PathFindFileName,...
    • 易语言U盘文件复制
      易语言U盘文件复制源码,U盘文件复制,文件列表,CopyFile,取路径文件名,取路径扩展名,MsgProc,GetTextAddress,GetLogicalDriveStrings,FindFirstFile,FindNextFile,FindClose,PathFindExtension,PathFindFileName,...
    • Linux系统U盘自动识别与文件拷贝
      Linux系统U盘自动识别与文件拷贝程序源码
    • U盘免疫文件.zip
      根据windows操作系统同一目录下文件间、文件与文件夹间不能同名的系统要求,磁盘免疫工作的原理就是用最易受攻击的三个文件的文件名,来建立一个隐藏和不可读写的同名文件夹,来保证U盘插入的时候不会自行启动病毒...
    • 关于单片机读写U盘F16和F32文件系统
      关于单片机读写U盘F16和F32文件系统,好东西不容错过。
    • U盘文件窃取者 V2.05
      本程序会监视USB移动存储设备(如:U盘,MP3等)的插入,并按用户设置在后台复制文件.★注意事项: 1.本程序为免费绿色软件,无需注册,原始文件不会捆绑任何病毒文件. 2.若被拷贝U盘文件较多,可能在安全删除硬件时提示"现...
    • U盘文件管理专家 USB Notebook
      如果电脑中保存的都是些大众化的资料倒也无所谓,可万一存储的都是些机密文件或者个人隐私的话,就难免会有泄密的可能了。其实,完全可以将手中的U盘改造为一个“开机钥匙盘”。只有当U盘插入时,电脑才能正常工作,...
    • U盘MP3文件系统源代码
      包含FAT16,FAT32文件系统的C语言实现,个人感觉还不错,发出来让大家共享
    • U盘文件管理器
      U盘文件管理器是一个可以简单的文件管理器项目源码,不过不是只管理sd卡,比如U盘之类的手机外挂的存储设备也可以进行文件管理,并且可以简单的读取文本文件的内容并显示。项目编译版本2.3.3默认编码GBK。
    • DOS文件用来制作U盘dos系统
      文件解压出来用软碟通刻录到U盘就可以用了。