CH376,提示写文件成功,实际没有写入,请指导。

void SendOneByteToCh376(Uint08 Data)

{

    USART_ClearFlag(USART1,USART_FLAG_TC);

    USART_SendData(USART1,Data);

    while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);

}


void SendCmdToCh376(Uint08 Cmd)

{

    SendOneByteToCh376(0x57);

    SendOneByteToCh376(0xAB);

    SendOneByteToCh376(Cmd);

}


Uint16 WriteReqDataBlock(Uint08 *Buf)

{

    Uint16 BlockLen,BlockLenBak;

    SendCmdToCh376(WriteReqData);

    BlockLenBak=BlockLen=GetCh376IntStatus();

    if(BlockLen)

    {

        do

        {

        //  SendOneByteToCh376(*Buf++);

            SendOneByteToCh376('1');

        }while(--BlockLen);

    }

    return(BlockLenBak);

}


void ByteWriteCh376(Uint08 *Buf,Uint32 Len)

{

    Uint16 BlockLen;

    SendCmdToCh376(Byte_Write);

    SendOneByteToCh376((Uint08)Len);

    SendOneByteToCh376((Uint08)(Len>>8));

    while(1)

    {

        if(GetCh376IntStatus() == USB_DISK_WRITE)

        {

            BlockLen=WriteReqDataBlock(Buf);

            SendCmdToCh376(Byte_Write_Go);

            Buf = Buf + BlockLen;

        }

        else

        {

            break;

        }

    }

}

创建文件,打开文件都正常,444个字节的数据要写入文件;“if(GetCh376IntStatus() == USB_DISK_WRITE)”第一二次都是0x1E,第三次是0x14,“BlockLen=WriteReqDataBlock(Buf);”第一次返回0xFF,第二次返回0xBD,合计也是444字节,这些都显示向文件写数据是成功的,但是在PC上打开文件看不到写入的数据。请专家指导,谢谢!

另:文件的创建时间怎么解决?


请专家指导,j_0064.gif


解决了,在数据全部写完后,必须执行CloseFile()操作,且允许更新文件长度。



但是为什么有几个我不希望的字符出现呢?

blob.png


即使是新创建的文件,没有打开更没有写数据到文件,文件里也有字符,什么情况??


新创建的文件如果什么都不写,会有一个字节长度。下次打开,可以偏移文件指针到文件头。

修改属性参考EXAM10。


只有登录才能回复,可以选择微信账号登录