大家好:
我在使用3200的外部flash的时候,想要实现文件的追加功能,sl_FsWrite函数的第二个参数是偏移量,我先用 sl_FsGetInfo 得到了文件长度,sl_FsWrite的第二个参数设置成得到的长度,我使用串口输出读到的数据个数是正确的,可是串口只能输出最后一次写入的字符串.
char FileWrite(char *fileName,uint32_t *ulToken,char *data, uint16_t dataLen){
long lRetVal = -1;
long lFileHandle;
SlFsFileInfo_t pFsFileInfo;
uint32_t ulToken_t = 0;
lRetVal = sl_FsGetInfo((uint8_t*)fileName, ulToken_t, &pFsFileInfo);
if(lRetVal!=0)
{
Report("the file is not exit\n\r");
}
else
{
Report("the file is exit\n\r");
}
Report("pFsFileInfo.AllocatedLen:%d\n\r",pFsFileInfo.AllocatedLen);
Report("pFsFileInfo.FileLen:%d\n\r",pFsFileInfo.FileLen);
lRetVal = sl_FsOpen((uint8_t *)fileName,FS_MODE_OPEN_WRITE,ulToken,&lFileHandle);
if (lRetVal < 0){
UART_PRINT("sl_FsWrite is error \n\r");
lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);
}
}
if(pFsFileInfo.FileLen >= 20){
pFsFileInfo.FileLen = 0;
}
lRetVal = sl_FsWrite(lFileHandle, pFsFileInfo.FileLen/*偏移*/,(uint8_t *)data,dataLen);
if (lRetVal < 0){
UART_PRINT("sl_FsWrite is error \n\r");
lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);
}
lRetVal = sl_FsClose(lFileHandle, 0, 0, 0);
if (SL_RET_CODE_OK != lRetVal) {
UART_PRINT("sl_FsClose is error \r\n");
}
return SUCCESS;
}