私はロボット工学の「入門」コースにいる大学生です。今年の初めに、Netburner 5270 ボードを購入するように言われました。1 年を通して、いくつかの基本的なコードを学びましたが、最終的なプロジェクトの期限が迫っていて、エラーが発生しています。私のコードはかなり基本的です。最初にプッシュボタンが押されているかどうかを確認し、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);
}
** 2 つの do while ループは、呼び出しをやり直すために最近追加したものです。その書き込みを書いたかどうかはわかりません (これも私の最初のコーディング クラスです)。
私のエラーは f_close 関数内で発生します。プッシュボタンを 10 回連続で押すとすべてが機能しますが、11 回目はエラーが発生しますが、12 回目は再び機能しますか? 私の典型的なエラーは次のとおり です。F_ERR_NOTOPEN
また
*タスク (メイン) 中の f_close("Enter.txt") でエラーが発生しました。F_ERR_WRITE
また
*タスク (メイン) 中の f_close("Enter.txt") でエラーが発生しました。F_ERR_NOTFORMATED
私が言ったように、私は多くのエラーを取得しませんが、エラーが発生すると、それらの 3 つのうちの 1 つになります。何が起こっているのか、どうやって修正しようとしているのか、本当にわかりません。このコードは NBeclipse で書かれています。誰かに提案やヒントがあれば、本当に感謝しています。