Main Content

fwrite (serial)

(削除予定) バイナリ データをデバイスに書き込む

このオブジェクト関数 serial は将来のリリースで削除される予定です。代わりにオブジェクト関数 serialport を使用してください。コードの更新の詳細については、互換性についての考慮事項を参照してください。

構文

fwrite(obj,A)
fwrite(obj,A,'precision')
fwrite(obj,A,'mode')
fwrite(obj,A,'precision','mode')

説明

fwrite(obj,A) はバイナリ データ A をシリアル ポート オブジェクト obj に接続しているデバイスに書き込みます。

fwrite(obj,A,'precision')precision で指定された精度でバイナリ データを書き込みます。

precision は、各値の書き込むバイト数を制御し、それらのバイトを整数、浮動小数点、文字値のいずれかとして解釈します。precision が指定されていない場合、uchar (符号なし 8 ビット文字) が使用されます。precision でサポートされている値は、ヒントにリストされています。

fwrite(obj,A,'mode') は、mode で指定されたコマンド ライン アクセスを使用してバイナリ データを書き込みます。modesync の場合、A は同期を取りながら書き込まれ、コマンド ラインは停止します。modeasync の場合、A は非同期で書き込まれ、コマンド ラインは停止しません。mode が指定されていない場合、書き込み操作は同期を取りながら行われます。

fwrite(obj,A,'precision','mode') は、precision で指定される精度と mode で指定されるコマンド ライン アクセスを使用してバイナリ データを書き込みます。

ヒント

データをデバイスに書き込むには、関数 fopen を使用してデバイスを obj に接続しなければなりません。接続されたシリアル ポート オブジェクトでは、Status プロパティの値が open になります。obj がデバイスに接続されていないときに、書き込み操作を実行するとエラーが返されます。

ValuesSent プロパティ値は関数 fwrite が実行される度に、書き込まれた値の数ずつ増加します。

出力バッファーが書き込まれるすべてのデータを保持できない場合は、エラーが発生します。OutputBufferSize プロパティを使用すると出力バッファー サイズを指定できます。

シリアル オブジェクト上の FlowControl プロパティを hardware に設定していてもハードウェア接続が検出されない場合、fwrite はエラー メッセージを返します。この状態は、デバイスが接続されていない場合、または接続済みのデバイスがデータ受信の準備ができていることをアサートしていない場合に発生します。リモート デバイスのステータスおよびフロー制御設定をチェックして、ハードウェアのフロー制御が MATLAB® でエラーの発生の原因となっていないかどうかを確認してください。

メモ

データ受信の準備が整っていることをデバイスがアサートしているかどうかをチェックするには FlowControlnone に設定します。デバイスへの接続が確立されたら、PinStatus 構造体の ClearToSend をチェックします。ClearToSendoff の場合、リモート デバイス側に問題があります。ClearToSendon の場合、データ受信の準備ができているハードウェア FlowControl デバイスがあるため、関数 fwrite を実行できます。

同期および非同期の書き込み操作

既定の設定では、データは同期を取ってデバイスに書き込まれ、操作が完了するまでコマンド ラインは停止されます。入力引数 modeasync に設定すると、非同期の処理が実行できます。非同期の書き込みは、以下のように実行されます。

  • BytesToOutput プロパティ値は出力バッファー中のバイト数を反映して連続的に更新されます。

  • OutputEmptyFcn プロパティに対して設定されているコールバック関数は出力バッファーが空のときに実行されます。

TransferStatus プロパティを使用すると非同期の書き込み操作が進行中であるかどうかを判断できます。

fwrite を使用して書き込み操作を完了するための規則

以下の場合に、fwrite を使用したバイナリ書き込み操作が完了します。

  • 指定したデータが書き込まれる

  • Timeout プロパティで指定した時間が経過する

    メモ

    Terminator プロパティはバイナリ書き込み操作では使用されません。

サポートされる精度

次の表に、サポートされている precision の値を示します。

データ型

精度

解釈

文字

uchar

8 ビット符号なし文字

schar

8 ビット符号付き文字

char

8 ビット符号付きまたは符号なし文字

整数

int8

8 ビット整数

int16

16 ビット整数

int32

32 ビット整数

uint8

8 ビット符号なし整数

uint16

16 ビット符号なし整数

uint32

32 ビット符号なし整数

short

16 ビット整数

int

32 ビット整数

long

32 または 64 ビット整数

ushort

16 ビット符号なし整数

uint

32 ビット符号なし整数

ulong

32 または 64 ビット符号なし整数

浮動小数点

single

32 ビット浮動小数点

float32

32 ビット浮動小数点

float

32 ビット浮動小数点

double

64 ビット浮動小数点

float64

64 ビット浮動小数点

バージョン履歴

R2006a より前に導入

すべて折りたたむ

R2021a: serial オブジェクト インターフェイスは削除予定

この関数の serial オブジェクトでの使用は削除される予定です。シリアル ポート デバイスにアクセスするには、代わりに serialport オブジェクトと、その関数およびプロパティを使用してください。

推奨される機能には追加の性能があり、パフォーマンスも改善されています。推奨される機能の使用の詳細については、serialport インターフェイスへのコードの遷移を参照してください。

参考

関数