?? osfile.c
字號:
/****************************************Copyright (c)**************************************************
** 廣州周立功單片機發展有限公司
** 研 究 所
** ARM開發組
**
** http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: OSFile.c
**創 建 人: 陳明計
**最后修改日期: 2004年7月9日
**描 述: ZLG/FS在μCOS-II下使用的接口
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 陳明計
** 版 本: V1.0
** 日 期: 2003年12月20日
** 描 述: 原始版本
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 陳明計
** 日 期: 2004年7月9日
** 描 述: 修改注釋
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define IN_OSFILE
#include "config.h"
/* 簡化接口函數編寫的一個宏 */
/* 參數:a為請求的操作 */
/* b為不能提供服務(包括不能提交請求)時的返回值 */
/* c為服務器通過時的返回值。*/
#define Together(a, b, c) \
Temp.Command = a; \
ThisRt = b; \
Temp.Rt = OSMboxCreate(NULL); \
if (Temp.Rt != NULL) \
{ \
if (OSQPost(FileCommad, (void *)(&Temp)) == OS_NO_ERR) \
{ \
OSMboxPend(Temp.Rt, 0, &err); \
if (err == OS_NO_ERR) \
{ \
OSMboxDel(Temp.Rt, OS_DEL_ALWAYS, &err); \
ThisRt = c; \
} \
} \
} \
return ThisRt;
static void *OSFileQ[FILE_Q_SIZE]; /* 消息隊列的消息存儲空間 */
static OS_EVENT *FileCommad; /* 消息隊列指針 */
/*********************************************************************************************************
** 函數名稱: OSRemoveFile
** 功能描述: 刪除文件
**
** 輸 入: DirFileName:用戶使用的文件名
**
** 輸 出: RETURN_OK:成功
** 其它參考fat.h中關于返回值的說明
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSRemoveFile(char *DirFileName)
{
OSFileParameter Temp;
uint8 err, ThisRt;
Temp.P1.cp = DirFileName;
Together(OS_RemoveFile, NOT_RUN, Temp.P1.Puint8);
}
/*********************************************************************************************************
** 函數名稱: OSFileOpen
** 功能描述: 以指定方式打開文件
**
** 輸 入: DirFileName:用戶使用的文件名
** Type:打開方式
** 輸 出: 文件句柄,Not_Open_FILE為不能打開
**
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
HANDLE OSFileOpen(char *DirFileName, char *Type)
{
OSFileParameter Temp;
uint8 err;
HANDLE ThisRt;
Temp.P1.cp = DirFileName;
Temp.P2.cp = Type;
Temp.Command = OS_FileOpen;
ThisRt = Not_Open_FILE;
Temp.Rt = OSMboxCreate(NULL);
if (Temp.Rt != NULL)
{
if (OSQPost(FileCommad, (void *)(&Temp)) == OS_NO_ERR)
{
OSMboxPend(Temp.Rt, 0, &err);
if (err == OS_NO_ERR)
{
OSMboxDel(Temp.Rt, OS_DEL_ALWAYS, &err);
ThisRt = Temp.P1.Handle;
}
}
}
return ThisRt;
}
/*********************************************************************************************************
** 函數名稱: OSFileClose
** 功能描述: 關閉指定文件
**
** 輸 入: Handle:文件句柄
**
** 輸 出: RETURN_OK:成功
** 其它參考fat.h中關于返回值的說明
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSFileClose(HANDLE Handle)
{
OSFileParameter Temp;
uint8 err, ThisRt;
Temp.P1.Handle = Handle;
Together(OS_FileClose, NOT_RUN, Temp.P1.Puint8);
}
/*********************************************************************************************************
** 函數名稱: OSFileGetCh
** 功能描述: 從文件讀一個字節
**
** 輸 入: Ch:返回讀到的數據
** Handle:文件句柄
** 輸 出: RETURN_OK:成功
** 其它參考fat.h中關于返回值的說明
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSFileGetCh(char *Ch, HANDLE Handle)
{
OSFileParameter Temp;
uint8 err, ThisRt;
Temp.P1.cp = Ch;
Temp.P2.Handle = Handle;
Together(OS_FileGetCh, NOT_RUN, Temp.P1.Puint8);
}
/*********************************************************************************************************
** 函數名稱: OSFileRead
** 功能描述: 讀取文件
**
** 輸 入: Buf:保存讀回的數據
** Size:要讀的字節數
** Handle:文件句柄
** 輸 出: 實際讀到的字節數
**
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint32 OSFileRead(void *Buf, uint32 Size, HANDLE Handle)
{
OSFileParameter Temp;
uint8 err;
uint32 ThisRt;
Temp.P1.cp = Buf;
Temp.P2.Puint32 = Size;
Temp.P3.Handle = Handle;
Together(OS_FileRead, 0, Temp.P1.Puint32);
}
/*********************************************************************************************************
** 函數名稱: OSFilePutCh
** 功能描述: 寫一個字節到文件
**
** 輸 入: Ch:要寫的數據
** Handle:文件句柄
** 輸 出: RETURN_OK:成功
** 其它參考fat.h中關于返回值的說明
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSFilePutCh(uint8 Ch, HANDLE Handle)
{
OSFileParameter Temp;
uint8 err, ThisRt;
Temp.P1.Puint8 = Ch;
Temp.P2.Handle = Handle;
Together(OS_FilePutCh, NOT_RUN, Temp.P1.Puint8);
}
/*********************************************************************************************************
** 函數名稱: OSFileWrite
** 功能描述: 寫文件
**
** 輸 入: Buf:要寫的數據
** Size:要寫的字節數
** Handle:文件句柄
** 輸 出: 實際寫的字節數
**
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint32 OSFileWrite(void *Buf, uint32 Size, HANDLE Handle)
{
OSFileParameter Temp;
uint8 err;
uint32 ThisRt;
Temp.P1.cp = Buf;
Temp.P2.Puint32 = Size;
Temp.P3.Handle = Handle;
Together(OS_FileWrite, 0, Temp.P1.Puint32);
}
/*********************************************************************************************************
** 函數名稱: OSFileCloseAll
** 功能描述: 關閉所有打開的文件
**
** 輸 入: 無
**
** 輸 出: NOT_RUN:未執行
** RETURN_OK:成功
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSFileCloseAll(void)
{
OSFileParameter Temp;
uint8 err, ThisRt;
Together(OS_FileCloseAll, NOT_RUN, RETURN_OK);
}
/*********************************************************************************************************
** 函數名稱: OSFileEof
** 功能描述: 判斷文件是否到讀\寫到文件尾
**
** 輸 入: Handle:文件句柄
**
** 輸 出: 0:否
** 1:是
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSFileEof(HANDLE Handle)
{
OSFileParameter Temp;
uint8 err, ThisRt;
Temp.P1.Handle = Handle;
Together(OS_FileEof, NOT_RUN, Temp.P1.Puint8);
}
/*********************************************************************************************************
** 函數名稱: OSFileSeek
** 功能描述: 移動文件讀\寫位置
**
** 輸 入: Handle:文件句柄
** offset:移動偏移量
** Whence:移動模式SEEK_SET:從文件頭計算SEEK_CUR:從當前位置計算SEEK_END:從文件尾計算
** 輸 出: 無
**
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSFileSeek(HANDLE Handle, int32 offset, uint8 Whence)
{
OSFileParameter Temp;
uint8 err, ThisRt;
Temp.P1.Handle = Handle;
Temp.P2.Pint32 = offset;
Temp.P3.Puint8 = Whence;
Together(OS_FileSeek, NOT_RUN, Temp.P1.Puint8);
}
/*********************************************************************************************************/
/*********************************************************************************************************
** 函數名稱: OSMakeDir
** 功能描述: 建立目錄
**
** 輸 入: Path:絕對路徑名
**
** 輸 出: RETURN_OK:成功
** 其它參考fat.h中關于返回值的說明
** 全局變量:
** 調用模塊: OSQPost
**
** 作 者: 陳明計
** 日 期: 2003年12月20日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSMakeDir(char *Path)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -