创建了一个"/AD.TXT\0"的文件,可以写数据;但是关闭后再打开时候出现错误,
显示的是:文件并没有被正确打开
显示的是:
创建一个TXT文件成功!
需要写入TXT的数据量为:24
TXT文本数据写入成功!
TXT文本创建并写入完成!
文件打开成功!
文件定位失败--180
我的文件setfilename程序:
void CH376SetFileName( alt_8 *Name )
{
alt_u8 i;
alt_8 c;
for( i = 40; i != 0; --i )
{
c = *Name;
write_data_to_usb( c );
if( c == 0 )
{
break;
}
Name ++;
}
}
主程序:
//新建一个名为AD.TXT的文件
printf("\n创建一个TXT文件");
write_command_to_usb(SET_FILE_NAME);//送“设置文件名”命令
CH376SetFileName("/AD.TXT\0");
write_command_to_usb(FILE_CREATE); //送“新建文件”命令
while(ch375_intflag != 1); //等待中断产生
ch375_intflag = 0; //清除CH376中断标志位
if(ch375_status == USB_INT_SUCCESS) //请求继续写入
{
printf("成功!\n");
}
else
{
printf("失败--%d\n",ch375_status);
while(1);
}
//往新建文件写入一串数据“AD数据采集实时存储:”
write_command_to_usb(BYTE_WRITE); //以字节为单位从当前位置写入数据块
write_data_to_usb(24);
write_data_to_usb(0);
while(ch375_intflag != 1); //等待中断产生
ch375_intflag = 0; //清除CH376中断标志位
if(ch375_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",ch375_status);
while(1);
}
//send_string_to_usb1("AD数据采集实时存储:\r\n");
send_string_to_usb("AD数据采集实时存储:\r\n",20+4); //送字符串“AD数据采集实时存储:”
write_command_to_usb(BYTE_WR_GO); //继续字节写
while(ch375_intflag != 1); //等待中断产生
ch375_intflag = 0; //清除CH376中断标志位
if(ch375_status == USB_INT_SUCCESS) //请求继续写入
{
printf("TXT文本数据写入成功!\n");
}
else
{
printf("TXT文本数据写入失败--%d\n",ch375_status);
while(1);
}
write_command_to_usb(FILE_CLOSE); //关闭当前已经打开的文件或目录
write_data_to_usb(1); //允许自动更新文件长度
printf("TXT文本创建并写入完成!\n\n");
write_command_to_usb(SET_FILE_NAME);//送“设置文件名”命令
CH376SetFileName("/AD.TXT\0");
write_command_to_usb(FILE_OPEN); //送“打开文件或目录,枚举文件和目录”命令
while(ch375_intflag != 1); //等待中断产生
ch375_intflag = 0; //清除CH376中断标志位
if(ch375_status == USB_INT_SUCCESS) //请求继续写入
{
printf("文件打开成功!\n");
}
else
{
printf("文件打开失败--%d\n",ch375_status);
while(1);
}
我试了一下,
write_command_to_usb(SET_FILE_NAME);//送“设置文件名”命令
CH376SetFileName("/AD.TXT\0");
write_command_to_usb(FILE_OPEN); //送“打开文件或目录,枚举文件和目录”命令
改成:
write_command_to_usb(SET_FILE_NAME);//送“设置文件名”命令
CH376SetFileName("/A.TXT\0");
write_command_to_usb(FILE_OPEN); //送“打开文件或目录,枚举文件和目录”命令
显示的也是:
文件打开成功!
能解释一下是为什么么?
你的设置文件名有问题,写入文件名的时候你写多了,应该加上判断条件if ( c == '\' || c == '/' ) c = 0; //强行截止文件名。
试了一下用下面的程序:
void CH376SetFileName( alt_8 *Name )
{
alt_8 c;
c = *Name;
write_data_to_usb( c );
while ( c ) {
Name ++;
c = *Name;
if ( c == 0x2F || c == 0x5C ) c = 0; /* 强行将文件名截止 */
write_data_to_usb( c );
}
}
还是出现同样的现象!
我们的函数在FILE_SYS.C里面有现成的函数,你试下有没有问题。
试了,我用的就是贵公司提供的例程。
文件可以创建成功,创建成功后进行写数据、定位都可以。但是关闭之后就不能再打开了,不知道为什么?
现在发现一个问题,如果前面关闭文件后,不更新文件长度,那么就能打开文件定位成功。
write_command_to_usb(FILE_CLOSE); //关闭当前已经打开的文件或目录
write_data_to_usb(0); //允许自动更新文件长度
printf("TXT文本创建并写入完成!\n");