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