文件创建在根目录下,调用沁恒给的驱动往文件里面写数据,并关闭文件。加入写文件代码后,定时自动检测USB连接状态的函总是检测到USB设备自动断开连接的现象。而且打开文件,里面也没有数据。
ps:论坛上看见一个仁兄说每次新创建一个文件过后,文件里总是有一个字节的数据,我这里也有这个情况
文件创建在根目录下,调用沁恒给的驱动往文件里面写数据,并关闭文件。加入写文件代码后,定时自动检测USB连接状态的函总是检测到USB设备自动断开连接的现象。而且打开文件,里面也没有数据。
ps:论坛上看见一个仁兄说每次新创建一个文件过后,文件里总是有一个字节的数据,我这里也有这个情况
附上代码
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,否则加大缓冲区或者分多次写入 */
s = CH376ByteWrite( Buf, s, NULL ); /* 以字节为单位向文件写入数据 */ //这个函数存在时,判断USB拔出的while循环会被直接跳过
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);
}
}
把写文件函数屏蔽过后,就不会出现在没拔出U盘的情况下自动检测到U盘断开连接的现象了
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 ); //这个函数存在时,判断USB拔出的while循环会被直接跳过
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);
}
程序已更改,写文件的函数之前有点问题。但是现在还是写不进去数据。
不加入些文档这段函数,程序能够在执行完创建文件命令后等待拔出。
但是加入写字节函数过后,不动U盘就自动检测到U盘被拔出了
大神 在吗?? 我也在做这个 最近遇到一些问题 想请教你 我的QQ 994099840 希望大神可以叫我 帮我解决一下