我是一名大学生,正在学习机器人技术的“入门”课程。今年年初,我们被告知要购买 Netburner 5270 板。这一年来,我们学习了一些基本代码,但现在我们的期末项目快到期了,但我遇到了一个错误。我的代码非常基本。我希望它首先检查按钮是否被按下,是否检查 dipswitch1 是否为高电平,如果是则打开 led1,打开伺服(开门),然后创建 - 写入字符串 - 并将文本文件关闭到我的SD卡。一切正常……70% 的时间。
这是应该为我的 SD 卡做所有我需要的功能
void Enter_Door(char * FileName) {
iprintf("\r\nCreating file: %s\r\n", FileName);
int i = 0;
F_FILE* fp;
do {
fp = f_open( FileName, "a+" ); // Creating and Opening File
i++;
if (fp == 0) { /// Does NOT open
OSTimeDly(TICKS_PER_SECOND / 2);
}
} while (fp == 0 && i < 5);
if (fp == 0) {
iprintf("\r\n Error in Opening:%s\r\n", FileName);
} else {
const unsigned int write_buffer_size = 100;
char write_buf[write_buffer_size];
sniprintf(write_buf, write_buffer_size, "Person Entered at %ld seconds\r\n", Secs);
int n = f_write( write_buf, 1, strlen( write_buf ), fp );
iprintf("Wrote %d bytes: %s", n, write_buf);
iprintf("Closing file %s\r\n\r\n", FileName);
int rv = f_close( fp ); // Close a previously opened file of type F_FILE
do {
i++;
if (rv != 0) { /// Does NOT open
OSTimeDly(TICKS_PER_SECOND / 2);
}
} while (rv != 0 && i > 10);
if (rv != 0) {
f_close_PrintError(FileName);
DisplayEffsErrorCode(rv);
}
** 我最近添加的两个 do while 循环是为了尝试重做调用,我不确定我是否写了那个写(这又是我的第一个编码课)
我的错误发生在 f_close 函数中。我将连续按下按钮 10 次,一切都会正常工作,但第 11 次我会得到错误,但第 12 次会再次工作?我的典型错误是: *任务期间 f_close("Enter.txt") 出错(主要);F_ERR_NOTOPEN
或者
*任务期间 f_close("Enter.txt") 出错(主要);F_ERR_WRITE
或者
*任务期间 f_close("Enter.txt") 出错(主要);F_ERR_NOTFORMATED
现在就像我说的那样,我并没有很多错误,但是当我这样做时,它就是这三个错误之一。我真的不知道发生了什么,甚至不知道如何尝试修复它。此代码正在 NBeclipse 上编写。如果有人有任何建议或提示,我将不胜感激。