CH376控制U盘创建并写入数据后,在PC上打不开[求助]

int main() { init_usb(); init_Umem(); printf("\n创建一个TXT文件……"); write_command_to_usb(SET_FILE_NAME); send_string_to_usb("/TAST.TXT\x0",12); write_command_to_usb(FILE_CREATE); while(ch376_intflag!=1); ch376_intflag=0; if(ch376_status==USB_INT_SUCCESS) { printf("成功!\n"); } else { printf("失败--%d\n",ch376_status); while(1); }

write_command_to_usb(BYTE_WRITE); write_data_to_usb(28); write_data_to_usb(0); while(ch376_intflag!=1); ch376_intflag=0; if(ch376_status==USB_INT_DISK_WRITE) { write_command_to_usb(WR_REQ_DATA); printf("需要写入TXT的数据量为:%d\n",read_data_from_usb()); } else { printf("\nTXT文本数据写入失败--%d\n",ch376_status); while(1); }

send_string_to_usb("HELLO,USB!",10); send_string_to_usb("U盘TXT文本创建成功",18); write_command_to_usb(BYTE_WR_GO); while(ch376_intflag!=1); ch376_intflag=0; if(ch376_status==USB_INT_SUCCESS) { printf("TXT文本数据写入成功!\n"); } else { printf("第二次TXT文本数据写入失败--%d\n",ch376_status); while(1); } write_command_to_usb(FILE_CLOSE); write_data_to_usb(1); printf("TXT文本创建并写入完成!\n"); while(1); return 0; }

以上是主程序

下面是Console界面信息: U盘已插入

U盘初始化成功 获取USB存储设备的磁盘物理容量…… 0x14成功 总扇区数为:31457279 每个扇区字节数为:512 总存储量为:15359MB 获取USB存储设备的磁盘空间信息……成功 逻辑盘扇区数为:31391680(15327MB) 剩余扇区数为:31391672(15327MB) 文件系统类型:FAT32

创建一个TXT文件……成功! 需要写入TXT的数据量为:28 TXT文本数据写入成功! TXT文本创建并写入完成!

20148252173619.jpg 图片是在PC机上打开新建文件时出现的警告信息

你创建的文件名有问题,看下你创建函数。


引用回复: int main() { init_usb(); init_Umem(); printf("\n创建一个TXT文件……"); write_command_to_usb(SET_FILE_NAME); send_string_to_usb("/TAST.TXT\x0",12); write_command_to_usb(FILE_CREATE); while(ch376_intflag!=1); ch376_intflag=0; if(ch376_status==USB_INT_SUCCESS) { printf("成功!\n"); } else { printf("失败--%d\n",ch376_status); while(1); }

write_command_to_usb(BYTE_WRITE); write_data_to_usb(28); write_data_to_usb(0); while(ch376_intflag!=1); ch376_intflag=0; if(ch376_status==USB_INT_DISK_WRITE) { write_command_to_usb(WR_REQ_DATA); printf("需要写入TXT的数据量为:%d\n",read_data_from_usb()); } else { printf("\nTXT文本数据写入失败--%d\n",ch376_status); while(1); }

send_string_to_usb("HELLO,USB!",10); send_string_to_usb("U盘TXT文本创建成功",18); write_command_to_usb(BYTE_WR_GO); while(ch376_intflag!=1); ch376_intflag=0; if(ch376_status==USB_INT_SUCCESS) { printf("TXT文本数据写入成功!\n"); } else { printf("第二次TXT文本数据写入失败--%d\n",ch376_status); while(1); } write_command_to_usb(FILE_CLOSE); write_data_to_usb(1); printf("TXT文本创建并写入完成!\n"); while(1); return 0; }

以上是主程序

下面是Console界面信息: U盘已插入

U盘初始化成功 获取USB存储设备的磁盘物理容量…… 0x14成功 总扇区数为:31457279 每个扇区字节数为:512 总存储量为:15359MB 获取USB存储设备的磁盘空间信息……成功 逻辑盘扇区数为:31391680(15327MB) 剩余扇区数为:31391672(15327MB) 文件系统类型:FAT32

创建一个TXT文件……成功! 需要写入TXT的数据量为:28 TXT文本数据写入成功! TXT文本创建并写入完成!

20148252173619.jpg 图片是在PC机上打开新建文件时出现的警告信息

文件名有什么问题?我看过BBS上的那个帖子。好像没什么问题,都符合要求。


呃…… 怎么才能回复别人的回复? 刚上这个论坛 不太懂


文件名的创建,必须是大写字母,文件名不超过8个字符,后缀不超过3个字符以0x00结尾。你首先在根目录下创建试一下?你程序中创建TAST.TXT,怎么会出现/TEST.TXT和TEST.txt文件呢?


/TEST.TXT和TEST.txt这几个都是为了试一下对不对。 是在根目录下创建的。好的,我再试一下。


《单片机通过CH375读写U盘文件的问题解答》这个帖子里提到: “另外,写完文件后要及时修改文件长度,如果写入了数据而文件长度为0,那么WINDOWS也读不出数据。” 这个应该怎么操作?


直接调用s = CH376FileClose( 1 ),关闭文件自动更新文件长度。


你的问题解决了吗 我也是这个问题啊 困扰好几天了


还没有!我也弄了好几天了,这两天有点其它事,没去弄。 我是在NIOS II里面去做的,读写数据和命令的函数是参考别人的写的 。 官网的的资料没有NIOS II上应用的代码。 我打算过两天在单片机上,用官方资料的给的代码试一下。


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