]> cloudbase.mooo.com Git - z180-stamp.git/blob - fatfs/doc/ja/forward.html
Import fatfs R0.12b
[z180-stamp.git] / fatfs / doc / ja / forward.html
1 <!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=utf-8">
5 <meta http-equiv="Content-Style-Type" content="text/css">
6 <link rel="up" title="FatFs" href="../00index_j.html">
7 <link rel="alternate" hreflang="en" title="English" href="../en/forward.html">
8 <link rel="stylesheet" href="../css_j.css" type="text/css" media="screen" title="ELM Default">
9 <title>FatFs - f_forward</title>
10 </head>
11
12 <body>
13
14 <div class="para func">
15 <h2>f_forward</h2>
16 <p>ファイルからデータを読み出し、送信ストリームに直接転送します。</p>
17 <pre>
18 FRESULT f_forward (
19 FIL* <span class="arg">fp</span>, <span class="c">/* [IN] ファイル オブジェクト構造体 */</span>
20 UINT (*<span class="arg">func</span>)(const BYTE*,UINT), <span class="c">/* [IN] データ転送関数 */</span>
21 UINT <span class="arg">btf</span>, <span class="c">/* [IN] 転送するバイト数 */</span>
22 UINT* <span class="arg">bf</span> <span class="c">/* [OUT] 転送されたバイト数 */</span>
23 );
24 </pre>
25 </div>
26
27 <div class="para arg">
28 <h4>引数</h4>
29 <dl class="par">
30 <dt>fp</dt>
31 <dd>ファイル オブジェクト構造体へのポインタを指定します。</dd>
32 <dt>func</dt>
33 <dd>データを渡すユーザ定義関数へのポインタを指定します。この関数の仕様はサンプルを参照してください。</dd>
34 <dt>btf</dt>
35 <dd>転送するバイト数(0~UINTの最大値)を指定します。</dd>
36 <dt>bf</dt>
37 <dd>実際に転送されたバイト数を格納する変数を指すポインタを指定します。</dd>
38 </dl>
39 </div>
40
41
42 <div class="para ret">
43 <h4>戻り値</h4>
44 <p>
45 <a href="rc.html#ok">FR_OK</a>,
46 <a href="rc.html#de">FR_DISK_ERR</a>,
47 <a href="rc.html#ie">FR_INT_ERR</a>,
48 <a href="rc.html#de">FR_DENIED</a>,
49 <a href="rc.html#io">FR_INVALID_OBJECT</a>,
50 <a href="rc.html#tm">FR_TIMEOUT</a>
51 </p>
52 </div>
53
54
55 <div class="para desc">
56 <h4>解説</h4>
57 <p>ファイルのデータをバッファに読み出さずに送信ストリームに直接転送します。アプリケーション側でデータ バッファを必要としないので、メモリの限られた環境で有効です。リード/ライト ポインタは転送されたバイト数だけ進みます。指定されたバイト数の転送中にファイルの終端に達した場合や送信ストリームがビジーになった場合、<tt class="arg">*bf</tt><tt class="arg">btf</tt>よりも小さくなります。</p>
58 </div>
59
60
61 <div class="para comp">
62 <h4>対応情報</h4>
63 <p><tt>_USE_FORWARD == 1</tt>のときに使用可能です。</p>
64 </div>
65
66
67 <div class="para use">
68 <h4>使用例(オーディオ再生)</h4>
69 <pre>
70 <span class="c">/*-----------------------------------------------------------------------*/</span>
71 <span class="c">/* f_forward関数から呼ばれるデータ送信関数の例 */</span>
72 <span class="c">/*-----------------------------------------------------------------------*/</span>
73
74 UINT out_stream ( <span class="c">/* 戻り値: 転送されたバイト数またはストリームの状態 */</span>
75 const BYTE *p, <span class="c">/* 転送するデータを指すポインタ */</span>
76 UINT btf <span class="c">/* &gt;0: 転送を行う(バイト数). 0: ストリームの状態を調べる */</span>
77 )
78 {
79 UINT cnt = 0;
80
81
82 if (btf == 0) { <span class="c">/* センス要求 */</span>
83 <span class="c">/* ストリームの状態を返す (0: ビジー, 1: レディ) */</span>
84 <span class="c">/* 一旦、レディを返したら、続く転送要求で少なくとも1バイトは */</span>
85 <span class="c">/* 転送されないと f_forward関数は FR_INT_ERR となる。 */</span>
86 if (FIFO_READY) cnt = 1;
87 }
88 else { <span class="c">/* 転送要求 */</span>
89 do { <span class="c">/* 全てのバイトを転送するか、ストリームがビジーになるまで繰り返す */</span>
90 FIFO_PORT = *p++;
91 cnt++;
92 } while (cnt &lt; btf &amp;&amp; FIFO_READY);
93 }
94
95 return cnt;
96 }
97
98
99 <span class="c">/*-----------------------------------------------------------------------*/</span>
100 <span class="c">/* f_forward関数の使用例 */</span>
101 <span class="c">/*-----------------------------------------------------------------------*/</span>
102
103 FRESULT play_file (
104 char *fn <span class="c">/* 再生するオーディオ ファイル名を指すポインタ */</span>
105 )
106 {
107 FRESULT rc;
108 FIL fil;
109 UINT dmy;
110
111 <span class="c">/* ファイルを読み出しモードで開く */</span>
112 rc = f_open(&amp;fil, fn, FA_READ);
113 if (rc) return rc;
114
115 <span class="c">/* 全てのデータが転送されるかエラーが発生するまで続ける */</span>
116 while (rc == FR_OK &amp;&amp; !f_eof(&amp;fil)) {
117
118 <span class="c">/* ほかの処理... */</span>
119
120 <span class="c">/* 定期的または要求に応じてデータをストリームに送出する */</span>
121 rc = f_forward(&amp;fil, out_stream, 1000, &amp;dmy);
122 }
123
124 <span class="c">/* ファイルを閉じて戻る */</span>
125 f_close(&amp;fil);
126 return rc;
127 }
128 </pre>
129 </div>
130
131
132 <div class="para ref">
133 <h4>参照</h4>
134 <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>
135 </div>
136
137 <p class="foot"><a href="../00index_j.html">戻る</a></p>
138 </body>
139 </html>