📄 9311fop.h
字号:
/*------------------------------------------------------------------*/
/*模块名称:9311fop.h */
/*模块功能:9311的文件操作的头文件 */
/*编写日期:2004年11月 */
/*编写者: dingding */
/*------------------------------------------------------------------*/
#ifndef DF9311FOP_H
#define DF9311FOP_H
/*------------------------------------------------------------------*/
/*--------------------------系统常量定义----------------------------*/
/*------------------------------------------------------------------*/
//扇区使用标志(针对参数管理)
#define SFNOUSE 0xFFFF //未使用
#define SFNEXT 0xF0 //连续标志
#define SFINVALID 0xF1 //内容失效
#define SFERROR 0xF2 //扇区坏
#define SFBOOT1 0x01 //引导程序
#define SFBOOT2 0x02 //二次引导
#define SFPROG 0x03 //主程序
#define SFYCPARA 0x08 //遥测整定
#define SFRECORD 0x09 //录波
#define SFDAT 0x10 //其他参数文件
#define SFCFG 0x11 //myconfig.dat
#define SFPORT 0x12 //ports.dat
#define SFDEV 0x13 //devices.dat
#define SFIPTBL 0x14 //iptable.dat
#define SFDZFD 0x20 //故障检测
#define SFFD1 0x21 //dzFd1.dat
#define SFFD2 0x22 //dzFd2.dat
#define SFC 0x30 //端口配置
#define SFC01 0x31 //c0001.dat
#define SFC02 0x32 //c0002.dat
#define SFC41 0x38 //c0041.dat
#define SFC42 0x39 //c0042.dat
#define SFDAR 0x40 //实际库
#define SF9311 0x41 //本机
#define SFDAR01 0x42 //c1
#define SFDAR02 0x43 //c2
#define SFDAR41 0x48 //n1
#define SFDAR42 0x49 //n2
#define SFDAL 0x50 //逻辑库
#define SFDAL01 0x51 //c1
#define SFDAL02 0x52 //c2
#define SFDAL41 0x58 //n1
#define SFDAL42 0x59 //n2
#define SFOTHER 0x80 //其他文件
//扇区分配(偏移量)
#define SLBSAENUM 16 //扇区分配基本个数
#define SABSAESIZE 0x1000 //每个扇区容量
#define SLALLNUM 64 //总扇区个数
#define SLANEW 48 //重新分配扇区限制
#define SLPROGNUM 64 //程序文件头分配个数
#define SABOOT 0x0 //引导程序
#define SABOOTINFO 0x2000 //配合引导程序的信息
#define SAMANAG 0x4000 //管理区
#define SLMANAG 0x100 //限制长度
#define SAMANAGBAK 0x6000 //管理区冗余
#define SAFINFO 0x8000 //文件信息
#define SLFINFO 0x40 //每个文件信息限制长度
#define SAFINFOBAK 0xA000 //文件信息冗余
#define SAYCPARA 0xC000 //遥测整定
#define SATMP 0xE000 //小临时扇区
#define SABOOT2 0x10000 //二次引导
#define SLBOOT2 0x40000 //空间限制
#define SAPROG 0x50000 //主程序
#define SLPROG 0x70000
#define SACFG 0xC0000 //参数起始位置
#define SLCFG 0x40000
#define SATEMP 0x110000 //临时扇区
#define SATEMPB1 0x120000 //临时扇区2
#define SATEMPB2 0x130000 //临时扇区3
#define SECTORBAK 0x140000 //扇区冗余,仅对主程序和参数
//操作标志
#define FOPWRITE 0x01 //写操作
#define FOPREAD 0x02 //读操作
#define FOPDEL 0x04 //删除操作
#define FOPRENEW 0x08 //重复操作
#define FOPNEXT 0x10 //续写操作
//其他常量
#define LASTFRAME 0x8000 //最后一帧标志
#define FRAMENUM 0x7FFF
#define MAXFILENAMELEN 33
#define FOPERROR 0xFFFF
#define SLITTERSIZE 0x2000
#define SBIGSIZE 0x10000
/*------------------------------------------------------------------*/
/*----------------------------结构定义------------------------------*/
/*------------------------------------------------------------------*/
__packed struct FileInfo{ //文件信息
char Name[MAXFILENAMELEN];
INT32U Length; //长度
INT32U CreateTime; //创建时间
INT32U Attr; //文件属性
INT16U Crc; //校验
};
struct FMemInfo{ //文件存储信息
char Name[MAXFILENAMELEN];
INT32U Addr; //文件地址
INT16U SAddr; //扇区位置
INT16U Flag; //文件标志
};
struct FOPInfo{ //文件操作信息
INT16U Flag; //操作标志
INT16U Num; //续写次数
INT16U Ltmp; //上次操作长度
INT32U Length; //已操作长度
struct FMemInfo MInfo;
};
/*------------------------------------------------------------------*/
/*--------------------------函数声明--------------------------------*/
/*------------------------------------------------------------------*/
//公共函数
BOOL FInit(void);
BOOL FReadInfo(struct FileInfo* pFile);
INT16U FReadInfos(void* pData, void* ListName);
INT16U FWrite(INT8U* pData, INT16U Num, INT16U Length, struct FileInfo* pFile);
INT16U FRead(INT8U* pData, INT16U Num, INT16U Length, struct FileInfo* pFile);
BOOL FDelete(struct FileInfo* pFile);
BOOL FDeleteAll(void);
//私有函数
INT16U FCRC(struct FileInfo* pFile, struct FMemInfo* pMem);
BOOL FSetADDR(struct FMemInfo* pMInfo, INT16U* SFlag, INT16U Len);
BOOL FGetADDR(struct FMemInfo* pMInfo);
BOOL FGetInfo(struct FileInfo* pInfo, INT16U SAddr);
BOOL FSetInfo(struct FileInfo* pInfo, INT16U SAddr);
BOOL FGetManage(INT16U* SFlag, INT16U Len);
BOOL FSetManage(INT16U* SFlag, INT16U Len);
BOOL FFlashCpy(INT32U Daddr, INT32U Saddr, INT32U Count, BOOL Flag);
BOOL FSectorErase(INT16U Sector);
INT16U FClass(char *name);
INT16U FAnewSector(INT16U* Flag, INT16U Cur);
INT16U GetFlashNumber(INT32U Addr);
INT32U GetFlashAddr(INT16U Number);
INT32U GetRealSector(INT32U Addr);
INT8U FGetSamp(void* pData, INT16U Attr[3], BOOL Flag);
INT32U FReadSamp(INT16U Attr[3], INT32U offset, INT8U* pData, INT32U Len);
BOOL FDelSamp(INT16U Attr[3]);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -