📄 udisk.h
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: udisk.c
** Descriptions: LPC2300控制优盘伴侣的串口驱动程序头文件
**
**------------------------------------------------------------------------------------------------------
** Created by: zhoulishan
** Created date:
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: Litiantian
** Modified date:
** Version:
** Descriptions: 大大改善代码可读性,并消除了若干BUG
********************************************************************************************************/
#ifndef __UDISK_H
#define __UDISK_H
/* 文件指针调整方式相关宏 */
#define SEEK_SET 0 // 从文件开始处移动文件指针
#define SEEK_CUR 1 // 从文件当前位置移动文件指针
#define SEEK_END 2 // 从文件尾移动文件指针
/* 宏定义 */
#define PARAMETER_ERR 0xff // 非法参数
#define MAX_FILE_SIZE 512
#define WAIT_TIME_OUT 0xffff
#define COMMNUNICATION_OFF 0xff // 禁止从机和主机之间的通讯
#define COMMNUNICATION_ON 0 // 允许从机和主机之间的通讯
#define HANDLE_AVAILABLE 0xff // 文件句柄有效,指示了此时没有其它文件打开
#define CMD_SUCCESS 0
#define NO_RESPONSE 0xf0
#define UART0_INT 6
/* 所涉及的数据结构定义 */
/* 文件控制块 */
typedef struct _FileCB
{
uint8 fh; // 若该值为0xff,表明本句柄空闲;否则表明句柄已被其它文件占用.
uint32 fsize;
}FileCB;
/* 描述文件操作信息的数据结构 */
typedef struct _CONTR_DISK
{
uint8 cmd; // 功能代码
uint8 cmds; // 存储应答帧里的功能代码执行状态信息,或请求帧里的功能代码参数
char *fname; // 文件名或路径
uint32 rlen; // 需读出数据的长度
uint8 *write_ptr; // 用于装载应答帧数据域数据的数据缓冲区指针
uint32 wlen; // 待写入数据的长度
volatile uint8 state; // 串口通讯开关: 0xff:禁止串口通讯; 0x00:串口通讯允许
}CONTR_DISK;
/* 系统信息数据块的定义 */
typedef struct __SYSINF
{
uint8 Baud;
uint8 Year;
uint8 Month;
uint8 Dom;
uint8 Hour;
uint8 Min;
uint8 Sec;
uint8 DiskIn; // 优盘的插入状态
FileCB FH; // 文件控制块
uint8 version; // 固件版本号
}SYSINF;
/*********************************************************************************************************
** 函数名称: UART0Init
** 功能描述: 初始化UART0
** 输入参数: bps: 波特率
** 输出参数: 无
********************************************************************************************************/
extern void UART0Init(uint32 bps);
/********************************************************************************************************
** 函数名称:UDiskIni
** 功能描述:操作EasyUDisk功能模块之前需调用的初始化函数
** 输入参数:baud 初始化使用的波特率
** 输出参数:无
********************************************************************************************************/
extern void UDiskIni(uint32 baud);
/*********************************************************************************************************
** 函数名称: GetSysInfo
** 功能描述: 获取系统信息
** 输入参数: sysinfptr: 系统信息数据块变量的指针
** 输出参数: TRUE: 正常应答返回
** FALSE: 超时出错返回
********************************************************************************************************/
extern uint8 GetSysInfo(SYSINF *sysinfptr);
/*********************************************************************************************************
** 函数名称: SetUDiskSysInfo
** 功能描述: 设置EasyUDisk功能模块的系统信息
** 输入参数: sysinfptr: 系统信息数据块变量指针
** 输出参数: TRUE: 正常应答返回
** FALSE: 超时出错返回
********************************************************************************************************/
extern uint8 SetUDiskSysInfo(SYSINF *sysinfptr);
/*********************************************************************************************************
** 函数名称: MakeDir
** 功能描述: 建立目录
** 输入参数: Path: 路径或目录名
** 输出参数: 若接收到应答则返回指令的执行状态;若没有接收到回应, 则返回0xff
********************************************************************************************************/
extern uint8 MakeDir(char *Path);
/*********************************************************************************************************
** 函数名称: ChangeDir
** 功能描述: 设置当前目录
** 输入参数: DirName: 新当前目录的路径或目录名
** 输出参数: 为0表示正常,
** 非零值为失败
********************************************************************************************************/
extern uint8 ChangeDir(char *DirName);
/*********************************************************************************************************
** 函数名称: RemoveDir
** 功能描述: 删除指定的目录
** 输入参数: DirName: 被删除目录的名字或路径
** 输出参数: 为0表示正常删除目录,
** 非零值为删除目录失败
********************************************************************************************************/
extern uint8 RemoveDir(char *DirName);
/*********************************************************************************************************
** 函数名称: FileOpen
** 功能描述: 打开文件.若该文件不存在,则建立一个
** 输入参数: fileName: 文件名
** 输出参数: 文件控制块指针,NULL为不能打开文件, 非零值为当前文件控制块的指针
********************************************************************************************************/
extern FileCB *FileOpen(char *fileName);
/*********************************************************************************************************
** 函数名称: FileClose
** 功能描述: 关闭已打开的文件
** 输入参数: 无
** 输出参数: NO_RESPONSE为没有应答, 否则返回指令执行的状态
********************************************************************************************************/
extern uint8 FileClose(void);
/*********************************************************************************************************
** 函数名称: RemoveFile
** 功能描述: 删除指定的文件
** 输入参数: FileName: 文件名或路径
** 输出参数: 为0表示正常删除文件,
** 非零值为删除文件失败
********************************************************************************************************/
extern uint8 RemoveFile(char *FileName);
/*********************************************************************************************************
** 函数名称: FileWrite
** 功能描述: 可将字节数大于512的数据块写入文件
** 输入参数: Buf : 要写的数据所在缓存的地址
** Size : 要写入文件的字节数
** FileCBPt: 文件控制块指针
** 输出参数: 实际写的字节数
********************************************************************************************************/
extern uint32 FileWrite(uint8 *Buf, uint32 Size, FileCB *FileCBPt);
/*********************************************************************************************************
** 函数名称: FileRead
** 功能描述: 读取文件
** 输入参数: Buf :保存读回的数据
** Size :要读的字节数
** FileCBPt:文件控制块指针
** 输出参数: 实际读到的字节数
********************************************************************************************************/
extern uint32 FileRead(uint8 *Buf, uint32 Size, FileCB *FileCBPt);
/*********************************************************************************************************
** 函数名称: FileSeek
** 功能描述: 移动文件读\写位置
** 输入参数: FileCBPt : 文件控制块指针
** offset : 移动偏移量
** move_mode : 移动模式
** SEEK_SET 文件的读写指针移动至文件头位置,并从此处开始移动
** SEEK_CUR 文件的读写指针移动至当前位置,并从此处开始移动
** SEEK_END 文件的读写指针移动至至文件尾,并从此处开始移动
** 输出参数: 成功返回0
** 出错返回非0值
********************************************************************************************************/
extern uint8 FileSeek(FileCB *FileCBPt, int32 offset, uint8 move_mode);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -