何かの理由で、組み込みターゲット、Microchip PIC24、およびランタイムlibc用のCコードを書いていますが、\ 0値をシリアルポートで正しく送信できません。Printfはヌル値を無視しますか?
printf("\xEE\xEE\0test");
たとえば、EE EE "test"を送信すると、ヌルバイトは無視されます。
これが原因かもしれないという手掛かりはありますか?
EDIT:Ermmm、決して気にしないXD。 doh '
何かの理由で、組み込みターゲット、Microchip PIC24、およびランタイムlibc用のCコードを書いていますが、\ 0値をシリアルポートで正しく送信できません。Printfはヌル値を無視しますか?
printf("\xEE\xEE\0test");
たとえば、EE EE "test"を送信すると、ヌルバイトは無視されます。
これが原因かもしれないという手掛かりはありますか?
EDIT:Ermmm、決して気にしないXD。 doh '
ヌル文字は、が文字列の最後であるため、そこでは文字列ターミネータCでprintf
が停止しています。
printf("%c", '\0');
お勧めとしてあなたがtest
が異なるprintf
呼び出しから来ていない、あなたが確認され、ライン上0xEE 0xEE test
を取得している場合は、次の作業もフォーマット文字列でputchar()
、またはprintf()
を使用しますか?
null文字は、printfに関する文字列の終わりを示します。私はそれが "テスト"を送信することに驚いています。おそらく、特にシリアルポート経由でwriteシステムコールを使う方が良いでしょう。
'fwrite'もうまくいくでしょう。 –
'write()'または 'fwrite()'を使います。違いは、 'fwrite'はバッファリングを行い、C標準によって定義されていることです(フリースタンディング実装では必要ありません)。 'write'はPOSIXによって定義されます。また、ストリームがバイナリモードであることを確認する必要があります。 'stdout'は通常デフォルトでテキストモードになっていますが、埋め込まれたターゲットの詳細は異なるかもしれません。 –
"EEEEtest"または "test"を送信しますか? – BlackBear