printf
機能を使用して、シリアルポートの文字を印刷します。私はこれらの2つのポスト1と2を読みました、しかし、マニピュレータを理解するI'amはわからない:printfをシリアルポートに再設定
言われています1st linkに:
をprintfの機能を有効にするには、まずあなたが新しい__FILE
構造体を作成する必要があります。この構造体はFILE構造体で呼び出されます。
なぜ私は__FILE
構造体を作成しなければならないのですか?私はこの文章を本当に理解していませんでした。 2nd linkで
我々はまた、__stdout
と__stdin
を再定義しなければならなかった標準I/Oライブラリーからの分離を完了するために
を言われています。これらは、__FILE
構造体の宣言の下のretarget.cファイル内にあります。
これらの2つの変数を再定義すると、それはコンパイルエラーではなく、私は再定義を意味します。
を。あなたは 'dup2()'を持っていますか?あなたのプラットフォームは 'stdout'に対してファイル記述子' 1'を使っているLinuxのように、通常の 'stdout'ファイル記述子の値を持っていますか?もしそうなら、 'int fd = open("/path/to/port "...);のようなことをしてください。 dup2(fd、STDOUT_FILENO); '。 'stdout'バッファリングを無効にしたいかもしれません。 –
多分、freopenはあなたの役に立つかもしれません。 – JohnTortugo
フィードバックのおかげで、@アンドリューヘンレ私はundfstand 'printf'は、' printf'関数のどこかにscreenにcaracterを表示するために 'fputc'を使用します。これは' fputc(stdout、car) 'への呼び出しです。もし我々がstdout fdを重複しているとすれば、 'car'も新しいfd(dupによって作成された)にprintdされますが、どうなりますか? – Mouin