创建文件成功,但只能写入一个字节

在U盘根目录下创建了文件,只能写入一个字节"【" 程序如下: lcd_disp_string(40,40,"检测U盘",LCD_RED,LCD_WHITE); res =mInitCH376Host(); mStopIfError( res ); delay_ms(200); //延时检测U盘连接 if( CH376DiskConnect()==USB_INT_SUCCESS )//检查U盘是否连接,等待U盘插入,对于SD卡,可以由单片机直接查询SD卡座的插拔状态引脚 { /* 对于检测到USB设备的,最多等待10*100mS,主要针对有些MP3太慢,对于检测到USB设备并且连接DISK_MOUNTED的,最多等待5*50mS,主要针对DiskReady不过的 */ for( i = 0; i < 10; i ++ ) /* 最长等待时间,300*10mS */ { lcd_disp_string(40,60,"等待U盘就绪中..." ,LCD_RED,LCD_WHITE); delay_ms(300); res = CH376DiskMount( ); /* 初始化磁盘并测试磁盘是否就绪 */ if ( res == USB_INT_SUCCESS ) break; /* 准备好 */ } if( i<10 ) { res =CH376ReadBlock(Buf);// 如果需要,可以读取数据块CH376_CMD_DATA.DiskMountInq,返回长度 if( res==sizeof(INQUIRY_DATA) )// U盘的厂商和产品信息 { Buf[res]=0 ; lcd_disp_string(40,80,((P_INQUIRY_DATA)Buf)->VendorIdStr,LCD_RED,LCD_WHITE); } strcpy( (char *)Buf, "\\AAAAAAAA.TXT" ); /* 目标文件名 */ res = CH376FileCreatePath( Buf ); /* 新建多级目录下的文件,支持多级目录路径,输入缓冲区必须在RAM中 */ lcd_disp_string(40,80,"创建文件AAAAAAAA.TXT",LCD_RED,LCD_WHITE); strcpy((char *)Buf, "兄弟们那个加油哇" ); res = CH376ByteWrite( Buf, 6, NULL ); /* 以字节为单位向当前位置写入数据块 */ lcd_disp_string(40,100,"写入文件AAAAAAAA.TXT",LCD_RED,LCD_WHITE); res = CH376FileClose( TRUE ); /* 关闭文件,对于字节读写建议自动更新文件长度 */ lcd_disp_string(40,120,"关闭文件",LCD_RED,LCD_WHITE); SafeRemoveDisk(); SPEAK_ON; delay_ms(1000); SPEAK_OFF; } else lcd_disp_string(40,60,"U盘未就绪! " ,LCD_RED,LCD_WHITE); } else { lcd_disp_string(40,60,"U盘没有插好! " ,LCD_RED,LCD_WHITE); } while(1);

你的流程上没有问题,前面初始化和DiskMount都通过了吗?你监测一下Buf是不是你想写入的数据?


DiskMount 通过了 能查到U盘的信息,我用电脑查到U盘文件了 只是只有一个字节


我把文件名改为AAAAAAA.TXT可以了


文件格式7个字符+'.'+3个扩展名一共11个字符,上面的程序是从网上复制的


文件名符合8+3格式,不包括'.',我用你的文件名是可以创建的。


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