CH376,USB寫文件不穩(wěn)定

文件創(chuàng)建在根目錄下,調(diào)用沁恒給的驅(qū)動(dòng)往文件里面寫數(shù)據(jù),并關(guān)閉文件。加入寫文件代碼后,定時(shí)自動(dòng)檢測USB連接狀態(tài)的函總是檢測到USB設(shè)備自動(dòng)斷開連接的現(xiàn)象。而且打開文件,里面也沒有數(shù)據(jù)。

ps:論壇上看見一個(gè)仁兄說每次新創(chuàng)建一個(gè)文件過后,文件里總是有一個(gè)字節(jié)的數(shù)據(jù),我這里也有這個(gè)情況

附上代碼


if(Get_Status(UsbConnect)==1&&Get_Status(UsbMount)==1&&Get_Status(UsbRdy)==0)//磁盤信息正確

? ? ? ?{

? ? ? ?


? ? ? ? ?//CH376DirCreatePath("/CHARGE");

? ? ? ? ?

? ? ? ? ? if(CH376FileOpen("HOST.TXT")== ERR_MISS_FILE)

? ? ? ? ? {

? ? ? ? ? ? if(CH376FileCreate("HOST.TXT")==USB_INT_SUCCESS){Set_Status(FileCreate,1);}

? ? ? ? ? ? else{Set_Status(FileOpen,0);Set_Status(FileCreate,0);}

? ? ? ? ? } ?

? ? ? ? ? else

? ? ? ? ? {

? ? ? ? ? ? ?CH376ByteLocate( 0xFFFFFFFF );

? ? ? ? ? ? ?Set_Status(FileOpen,1);

? ? ? ? ? }

? ? ? ? ? if(Get_Status(FileCreate)==1||Get_Status(FileOpen)==1)

? ? ? ? ? {

? ? ? ? ? ? Set_Status(UsbRdy,1);

? ? ? ? ? }

? ? ? ? // s=CH376GetFileSize( );

? ? ? ? // Set_Status(FileSize,s);

? ? ? strcpy( Buf, "SHENMEGUI" ); ?/* 注意字符串長度不能溢出buf,否則加大緩沖區(qū)或者分多次寫入 */

? ? s = CH376ByteWrite( Buf, s, NULL ); ?/* 以字節(jié)為單位向文件寫入數(shù)據(jù) */ //這個(gè)函數(shù)存在時(shí),判斷USB拔出的while循環(huán)會(huì)被直接跳過

? ? ? ? ?CLOSEFILE:

? ? ? ? ?if(Get_Status(FileOpen)==1||Get_Status(FileCreate)==1)

? ? ? ? ?{

? ? ? ? ? ? if(CH376FileClose(TRUE)==USB_INT_SUCCESS)

? ? ? ? ? ? {

? ? ? ? ? ? ? Set_Status(FileOpen,0);Set_Status(FileCreate,0);

? ? ? ? ? ? }?

? ? ? ? ? ? else

? ? ? ? ? ? {

? ? ? ? ? ? ?goto CLOSEFILE;

? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ?}

? ? ? ? ?LED=0xE7;

? ? ? ? ?Ch376TaskCnt++;

? ? ? ? }?

? ? ? ?

if(Get_Status(UsbRdy)==1)

? ? ? ?{

? ? ? ? ?if(CheckUsbConnect()!=USB_INT_SUCCESS) ? ? ? ? ??

? ? ? ? ?{

? ? ? ? ? ?

? ? ? ? ? Set_Status(UsbConnect,0);

? ? ? ? ? Set_Status(UsbMount,0);

? ? ? ? ? Set_Status(UsbRdy,0);

? ? ? ? ? }


? ? ? ? }?


把寫文件函數(shù)屏蔽過后,就不會(huì)出現(xiàn)在沒拔出U盤的情況下自動(dòng)檢測到U盤斷開連接的現(xiàn)象了


?while(1)

? ?{

? ? ? if(Get_Status(UsbConnect)==1&&Get_Status(UsbMount)==1&&Get_Status(UsbRdy)==0)//磁盤信息正確

? ? ? ?{


? ? ? ? ?CH376DirCreatePath("/CHARGE");

? ? ? ? ? if(CH376FileOpen("HOST.TXT")== USB_INT_SUCCESS){

? ? ? ? ? ? ?CH376ByteLocate( 0xFFFFFFFF );

? ? ? ? ? ? ?Set_Status(FileOpen,1);

? ? ? ? ? ? ?}

? ? ? ? ? else{

? ? ? ? ? ? if(CH376FileCreate("HOST.TXT")==USB_INT_SUCCESS){Set_Status(FileCreate,1);}

? ? ? ? ? ? else{Set_Status(FileOpen,0);Set_Status(FileCreate,0);}

? ? ? ? ? }

? ? ? ? ??

? ? ? ? ?s = CH376ByteWrite( "shenmegui", strlen( "shenmegui" ), NULL );

? ? ? ? ?if(Get_Status(FileCreate)==1||Get_Status(FileOpen)==1){

? ? ? ? ? ? Set_Status(UsbRdy,1);

? ? ? ? ?}

? ? ? ? ?CLOSEFILE:

? ? ? ? ?if(Get_Status(FileOpen)==1||Get_Status(FileCreate)==1){

? ? ? ? ? if(CH376FileClose(TRUE)==USB_INT_SUCCESS){Set_Status(FileOpen,0);Set_Status(FileCreate,0);}?

? ? ? ? ? else{

? ? ? ? ? ? ?goto CLOSEFILE;

? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ?}

? ? ? ? ?while(CH376DiskConnect()==USB_INT_SUCCESS){

? ? ? ? ?BUZZ=1;

? ? ? ? ?}

? ? ? ? ?BUZZ=0;

? ? ? ? ?Set_Status(UsbConnect,0);

? ? ? ? ?Set_Status(UsbMount,0);

? ? ? ? ?Set_Status(UsbRdy,0);

? ? ? ? ?LED=0xE7;

? ? ? ? ?Ch376TaskCnt++;



? ? ? ? ?//DelayMs(1000); ? ? ??

? ? ? ?}?

? ? ? ?

? ? ? ?else if(!(Get_Status(UsbConnect)==1&&Get_Status(UsbMount)==1))

? ? ? ?{

? ? ? ? ?Set_Status(UsbRdy,0);

? ? ? ? ?while(CheckUsbConnect()!=USB_INT_SUCCESS);//在這里等待USB插入

? ? ? ? ?Set_Status(UsbConnect,1);

? ? ? ? ?UsualDelay1ms(20);

? ? ? ? ?for(i=0;i<5;i++)

? ? ? ? ?{

? ? ? ? ? ?if(CH376DiskMount()==USB_INT_SUCCESS)

? ? ? ? ? ? {

? ? ? ? ? ? ? ?Set_Status(UsbMount,1);

? ? ? ? ? ? ? ?break;

? ? ? ? ? ? }

? ? ? ? ?}

?

? ? ? ? ? ?

? ? ? ? ?LED=0xE7;

? ? ? ? ?Ch376TaskCnt++;

? ? ? ? ?//DelayMs(1000);

? ? ? ?}else if(Get_Status(UsbRdy)==1){

? ? ? ? ?if(CheckUsbConnect()!=USB_INT_SUCCESS) ? ? ? ? ??

? ? ? ? ?{

? ? ? ? ? ?

? ? ? ? ? Set_Status(UsbConnect,0);

? ? ? ? ? Set_Status(UsbMount,0);

? ? ? ? ? Set_Status(UsbRdy,0);

? ? ? ? ? }

? ? ? ? ??

? ? ? ? ? //DelayMs(100);

? ? ? ? } else{

? ?

? ? ? ? ? ?BUZZ=1;

? ? ? ? ? ?DelayMs(100);

? ? ? ? ? ?BUZZ=0; ?

? ? ? ? }

? ? ? ??

? ? ? ?/*if(Flag_TakeOut){

? ? ? ? ?Flag_TakeOut=0;

? ? ?// s = CH376ByteWrite( "shenmegui", strlen( "shenmegui" ), NULL ); ?//這個(gè)函數(shù)存在時(shí),判斷USB拔出的while循環(huán)會(huì)被直接跳過

? ? ? ? ?CLOSEFILE:

? ? ? ? ?if(Get_Status(FileOpen)==1||Get_Status(FileCreate)==1){

? ? ? ? ? if(CH376FileClose(TRUE)==USB_INT_SUCCESS){Set_Status(FileOpen,0);Set_Status(FileCreate,0);}?

? ? ? ? ? else{

? ? ? ? ? ? ?goto CLOSEFILE;

? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ?}

? ? ? ? ?while(CH376DiskConnect()==USB_INT_SUCCESS){

? ? ? ? ?BUZZ=1;

? ? ? ? ?}

? ? ? ? ?BUZZ=0;

? ? ? ? ?Set_Status(UsbConnect,0);

? ? ? ? ?Set_Status(UsbMount,0);

? ? ? ? ?Set_Status(UsbRdy,0);

? ? ? ? }*/

? ? ? ??

? ? ? ??

? ? ? ?DelayMs(80);?

? ? ? ?

? ?}

?

程序已更改,寫文件的函數(shù)之前有點(diǎn)問題。但是現(xiàn)在還是寫不進(jìn)去數(shù)據(jù)。

不加入些文檔這段函數(shù),程序能夠在執(zhí)行完創(chuàng)建文件命令后等待拔出。

但是加入寫字節(jié)函數(shù)過后,不動(dòng)U盤就自動(dòng)檢測到U盤被拔出了



大神? 在嗎?? 我也在做這個(gè)? 最近遇到一些問題? 想請教你?? 我的QQ? 994099840?? 希望大神可以叫我 幫我解決一下


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频