OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [Common/] [FileSystem/] [FatFs-0.7e/] [doc/] [ja/] [forward.html] - Blame information for rev 606

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 606 jeremybenn
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
<html lang="ja">
3
<head>
4
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
5
<meta http-equiv="Content-Style-Type" content="text/css">
6
<link rel="up" title="FatFs" href="../00index_j.html">
7
<link rel="stylesheet" href="../css_j.css" type="text/css" media="screen" title="ELM Default">
8
<title>FatFs - f_forward</title>
9
</head>
10
 
11
<body>
12
 
13
<div class="para">
14
<h2>f_forward</h2>
15
<p>ファイルからデータを読み出し、送信ストリームに直接転送します。</p>
16
<pre>
17
FRESULT f_forward (
18
  FIL* <em>FileObject</em>,                 /* ファイル・オブジェクト構造体 */
19
  UINT (*<em>Func</em>)(const BYTE*,UINT),  /* データ転送関数 */
20
  UINT <em>ByteToFwd</em>,                  /* 転送するバイト数 */
21
  UINT* <em>ByteFwd</em>                    /* 転送されたバイト数 */
22
);
23
</pre>
24
</div>
25
 
26
<div class="para">
27
<h4>引数</h4>
28
<dl class="par">
29
<dt>FileObject</dt>
30
<dd>ファイル・オブジェクト構造体へのポインタを指定します。</dd>
31
<dt>Func</dt>
32
<dd>データを渡すユーザ定義関数へのポインタを指定します。この関数の仕様はサンプルを参照してください。</dd>
33
<dt>ByteToRead</dt>
34
<dd>転送するバイト数(0〜UINTの最大値)を指定します。</dd>
35
<dt>ByteRead</dt>
36
<dd>実際に転送されたバイト数を格納する変数を指すポインタを指定します。</dd>
37
</dl>
38
</div>
39
 
40
 
41
<div class="para">
42
<h4>戻り値</h4>
43
<dl class="ret">
44
<dt>FR_OK (0)</dt>
45
<dd>正常終了。</dd>
46
<dt>FR_DENIED</dt>
47
<dd>非読み込みモードで開いたファイルから読み込もうとした。</dd>
48
<dt>FR_DISK_ERR</dt>
49
<dd>ディスク・エラーによる失敗。</dd>
50
<dt>FR_INT_ERR</dt>
51
<dd>不正なFAT構造または内部エラーによる失敗。</dd>
52
<dt>FR_NOT_READY</dt>
53
<dd>メディアがセットされていないなど、物理ドライブが動作不能状態。</dd>
54
<dt>FR_INVALID_OBJECT</dt>
55
<dd>無効なファイル・オブジェクト。</dd>
56
</dl>
57
</div>
58
 
59
 
60
<div class="para">
61
<h4>解説</h4>
62
<p>ファイルのデータをバッファに読み出さずに送信ストリームに直接転送します。アプリケーション側でデータ・バッファを必要としないので、メモリの限られた環境で有効です。転送開始位置は、現在のファイルR/Wポインタからになります。ファイルR/Wポインタは転送されたバイト数だけ進みます。指定されたバイト数の転送中にファイルの終端に達した場合や送信ストリームがビジーになった場合、<tt>*ByteFwd</tt>は<tt>ByteToFwd</tt>よりも小さくなります。</p>
63
</div>
64
 
65
 
66
<div class="para">
67
<h4>対応情報</h4>
68
<p><tt>_USE_FORWARD == 1</tt>で、且つ<tt>_FS_TINY == 1</tt>のときに使用可能です。</p>
69
</div>
70
 
71
 
72
<div class="para">
73
<h4>使用例(オーディオ再生)</h4>
74
<pre>
75
/*-----------------------------------------------------------------------*/
76
/* f_forward関数から呼ばれるデータ送信関数の例                           */
77
/*-----------------------------------------------------------------------*/
78
 
79
UINT out_stream (   /* 戻り値: 転送されたバイト数またはストリームの状態 */
80
    const BYTE *p,  /* 転送するデータを指すポインタ */
81
    UINT btf        /* &gt;0: 転送を行う(バイト数). 0: ストリームの状態を調べる */
82
)
83
{
84
    UINT cnt = 0;
85
 
86
 
87
    if (btf == 0) {     /* センス要求 */
88
        /* ストリームの状態を返す (0: ビジー, 1: レディ) */
89
        /* 一旦、レディを返したら、続く転送要求で少なくとも1バイトは */
90
        /* 転送されないと f_forward関数は FR_RW_ERROR となる。 */
91
        if (FIFO_READY) cnt = 1;
92
    }
93
    else {              /* 転送要求 */
94
        do {    /* 全てのバイトを転送するか、ストリームがビジーになるまで繰り返す */
95
            FIFO_PORT = *p++;
96
            cnt++;
97
        } while (cnt &lt; btf &amp;&amp; FIFO_READY);
98
    }
99
 
100
    return cnt;
101
}
102
 
103
 
104
/*-----------------------------------------------------------------------*/
105
/* f_forward関数の使用例                                                 */
106
/*-----------------------------------------------------------------------*/
107
 
108
FRESULT play_file (
109
    char *fn        /* 再生するオーディオ・ファイル名を指すポインタ */
110
)
111
{
112
    FRESULT rc;
113
    FIL fil;
114
    UINT dmy;
115
 
116
    /* ファイルを読み出しモードで開く */
117
    rc = f_open(&amp;fil, fn, FA_READ);
118
 
119
    /* 全てのデータが転送されるかエラーが発生するまで続ける */
120
    while (rc == FR_OK &amp;&amp; fil.fptr &lt; fil.fsize) {
121
 
122
        /* ほかの処理... */
123
 
124
        /* 定期的または要求に応じてデータをストリームに送出する */
125
        rc = f_forward(&amp;fil, out_stream, 1000, &amp;dmy);
126
    }
127
 
128
    return rc;  /* FR_OK: 正常終了, ほか:異常終了 */
129
}
130
</pre>
131
</div>
132
 
133
 
134
<div class="para">
135
<h4>参照</h4>
136
<p><tt><a href="open.html">f_open</a>, <a href="gets.html">fgets</a>, <a href="write.html">f_write</a>, <a href="close.html">f_close</a>, <a href="sfile.html">FIL</a></tt></p>
137
</div>
138
 
139
<p class="foot"><a href="../00index_j.html">戻る</a></p>
140
</body>
141
</html>

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.