Main Content

serial のプロパティ

(削除予定) シリアル プロパティへのアクセス

serial およびそのオブジェクト プロパティは推奨されません。代わりに、serialport およびそのプロパティを使用してください。互換性についての考慮事項を参照してください。

シリアル プロパティは、serial オブジェクトを使用した通信の構成と読み取りと書き込みの動作の構成に使用されます。

一部のプロパティは関数 serial を使用したオブジェクトの作成中に設定できます。PortBaudRateByteOrderDataBitsParityStopBits および Terminator などのプロパティの詳細については、serial のリファレンス ページを参照してください。

通信プロパティは、データ ビット転送の設定に使用されます。読み取りと書き込みのプロパティは、操作を完了するタイムアウトの設定など、データの読み取りと書き込みに関連する要因の設定に使用されます。コールバック プロパティを使用して、イベントからコールバック関数を実行します。制御ピン プロパティを使用して、制御ピンとデータ フロー制御の状態を構成します。記録プロパティを使用して、ディスクへの記録情報を設定および制御します。

メモ

すべてのプロパティについてのこのサンプル構文では、シリアル オブジェクト s が作成されていることが前提です。プロパティの多くは、オブジェクトで fopen を呼び出す前にしか設定できません。一部はオブジェクトが開いている間に変更できます。

プロパティは serial オブジェクトを作成した後に設定できます。読み取り専用プロパティは以下のように呼び出されます。

s = serial('COM1');
s.TransferStatus
ans = 
     idle

構成可能なプロパティを以下のように設定します。

s = serial('COM1');
s.Timeout = 30;

汎用プロパティ

すべて展開する

シリアル ポート オブジェクトの説明的な名前。文字ベクトルまたは string として指定します。シリアル ポート オブジェクトの作成時に、説明的な名前は自動的に生成され、Name に保存されます。この名前は、単語 "Serial" と関数 serial で指定したシリアル ポートを連結することによって与えられます。ただし、Name の値はいつでも変更可能です。

シリアル ポートは、Port プロパティで与えられます。このプロパティ値を変更すると、Name は自動的に更新されて変更が反映されます。

例: s.Name = 'MySerialDevice';

データ型: char | string

この プロパティ は読み取り専用です。

シリアル ポート名。文字ベクトルまたは string として指定します。関数 seriallist は利用できるシリアル ポートのリストを提供します。シリアル ポート オブジェクトを作成するポートを指定しなければなりません。

ポート名はシリアル ポートがあるプラットフォームに依存します。以下のリストに、異なるプラットフォーム上でのシリアル コンストラクターの例を示します。

プラットフォームシリアル ポート コンストラクター
Linux® 64s = serial('/dev/ttyS0')
macOS 64s = serial('/dev/tty.KeySerial1')
Windows® 64s = serial('COM1')

例: s.Port

データ型: char | string

シリアル ポート オブジェクトに関連付けるラベル。文字ベクトルまたは string として指定します。Tag は、シリアル ポート オブジェクトを一意に識別します。Tag はそもそも、シリアル ポート オブジェクトをグローバル変数として定義したり、オブジェクトをコールバック ルーチン間で引数として渡したりする必要があるプログラムの作成に特に有用です。

Tag プロパティ値を指定することにより、関数 instrfind を使用してシリアル ポート オブジェクトを返すことができます。

例: s.Tag = 'MySerialObj';

データ型: char | string

この プロパティ は読み取り専用です。

オブジェクト タイプ。serial として指定します。Type は、関数 serial を使用してシリアル ポート オブジェクトが作成された後で自動的に定義されます。Type の値は常に serial です。

例: s.Type

データ型: char | string

シリアル ポート オブジェクトに関連付けるデータ。MATLAB 配列として指定します。シリアル ポート オブジェクトと関連付けるデータを保存するために UserData を構成します。オブジェクトは、このデータを直接には使用しませんが、関数 get またはドット表記を使用してアクセスできます。

シリアル ポート オブジェクトへのアクセスの制御。'on' または 'off' として指定します。これを使用すると、アプリケーション開発者は、アプリケーションで作成したシリアル ポート オブジェクトへのエンド ユーザー アクセスを禁止できます。オブジェクトの ObjectVisibility プロパティが 'off' に設定されている場合、関数 instrfind はそのオブジェクトを返したり、削除したりしません。

オブジェクトは、表示されませんが有効です。オブジェクトにアクセスする場合 (たとえば、オブジェクトを作成するファイル内から)、そのプロパティを設定および取得して、シリアル ポート オブジェクトで機能する関数に渡すことができます。

例: s.ObjectVisibility = 'off';

データ型: char | string

通信プロパティ

すべて展開する

デバイスのバイト順。littleEndian または bigEndian として指定します。ByteOrderlittleEndian の場合は、デバイスは最初のバイトを最初のメモリ アドレスに保存します。ByteOrderbigEndian の場合は、デバイスは最後のバイトを最初のメモリ アドレスに保存します。

たとえば、16 進数値 4F52 がデバイス メモリに保存されると仮定します。この値は 4F と 52 の 2 つのバイトで構成されているので、2 つのメモリ位置が利用されます。ビッグ エンディアン形式を使用すると、4F が先に小さいストレージ アドレスに保存されます。リトル エンディアン形式を使用すると、52 が先に小さいストレージ アドレスに保存されます。

littleEndian のバイト順は既定の設定であり、プロパティを指定しない場合に読み取りと書き込みの操作で使用されます。プロパティを指定しなければならないのは、バイト順を bigEndian に変更する場合のみです。

次の構文を使用して、シリアル オブジェクトを作成した後に ByteOrder プロパティを設定することもできます。

s.ByteOrder = 'bigEndian';

メモ

読み取りまたは書き込み操作を行う前に、ByteOrder をデバイスに対して適切な値に構成します。バイトを保存する順番に関する詳細は、デバイスのドキュメンテーションを参照してください。

例: s.ByteOrder = 'bigEndian';

データ型: char | string

ビットが送信されるレート。double として指定します。ボー レートはビット/秒として設定されます。送信されるビットには、スタート ビット、データ ビット、パリティ ビット (使用される場合)、ストップ ビットが含まれます。ただし、データ ビットのみが格納されます。

ボー レートは、情報が通信チャネルで送信される速度です。シリアル ポートのコンテキストでは、9600 ボーはシリアル ポートが 1 秒に最大 9600 ビットを送信できることを意味します。情報の単位が 1 ボー (1 ビット) である場合、ビット レートとボー レートは同一です。1 ボーが 10 ビット (8 データ ビットと 2 フレーミング ビットなど) として与えられている場合、ビット レートは 9600 のままですが、ボー レートは 9600/10 または 960 になります。BaudRate は常にビット/秒として設定されます。

メモ

コンピューターと周辺デバイスでデータの読み取りおよび書き込みを正常に行うには、同じボー レートに構成しなければなりません。

標準のボー レートは、110、300、600、1200、2400、4800、9600、14400、19200、38400、57600、115200、128000、256000 ビット/秒です。

次の構文を使用して、シリアル オブジェクトを作成した後に BaudRate プロパティを設定することもできます。

s.BaudRate = 4800;

例: s.BaudRate = 4800;

データ型: double

送信するデータ ビット数。567 または 8 として指定します。データは 5、6、7、8 個の一連のビットとして送信され、最下位ビットが最初に送信されます。ASCII 文字を送信するには少なくとも 7 個のデータ ビットが必要です。バイナリ データを送信するには 8 ビットが必要です。5 ビットおよび 6 ビット データ形式は、特殊な通信機器に利用されます。

メモ

コンピューターと周辺デバイスは、同数のデータ ビットを送信するように構成しなければなりません。

データ ビットに加えて、シリアル データ形式はスタート ビット、1 個または 2 個のストップ ビット、およびパリティ ビット (必要な場合) で構成されます。StopBits プロパティを使用してストップ ビットの数を指定し、Parity プロパティを使用してパリティ チェックのタイプを指定します。

次の構文を使用して、シリアル オブジェクトを作成した後に DataBits プロパティを設定することもできます。

s.DataBits = 7;

例: s.DataBits = 7;

データ型: double

パリティ チェックのタイプ。noneoddevenmark または space として指定します。

'none'

既定の設定。パリティ チェックは行いません。パリティ チェックは行われず、パリティ ビットは送信されません。

'odd'

Odd パリティ チェック。データ内の mark ビット (1 の) 数がカウントされ、奇数の mark ビットを取得するためにパリティ ビットはアサートされるか、またはアンアサートされます。

'even'

Even パリティ チェック。データ内の mark ビット数がカウントされ、偶数の mark ビットを取得するためにパリティ ビットはアサートされるか、またはアンアサートされます。

'mark'

Mark パリティ チェック。パリティ ビットはアサートされます。

'space'

Space パリティ チェック。パリティ ビットはアンアサートされます。

パリティ チェックは、1 ビットのエラーのみを検出できます。2 ビットのエラーが発生した場合は、データが実際には不正確であっても、表面上有効なパリティをもつ場合があります。

パリティ ビットに加えて、シリアル データ形式はスタート ビット、5 から 8 のデータ ビット、1 つまたは 2 つのストップ ビットで構成されます。DataBits プロパティを使用してデータ ビット数を指定し、StopBits プロパティを使用してストップ ビット数を指定します。

次の構文を使用して、シリアル オブジェクトを作成した後に Parity プロパティを設定することもできます。

s.Parity = 'even';

例: s.Parity = 'even';

データ型: char | string

バイトの終了を示すためのビット数。11.5 または 2 として指定します。StopBits1 の場合は、データ送信の終了を示すために 1 個のストップ ビットが利用されます。StopBits2 の場合は、データ送信の終了を示すために 2 個のストップ ビットが利用されます。StopBits1.5 の場合は、ストップ ビットは 1 ビットの送信のための標準的な時間の 150% で送信されます。

メモ

コンピューターと周辺デバイスは、同数のストップ ビットを送信するように構成されていなければなりません。

可能な値の一覧です。

1

既定の設定。バイトの終了を示すために 1 つのストップ ビットが送信されます。

1.5

ストップ ビットは、1 ビットの標準的な送信時間の 150% で送信されます。

2

バイトの終了を示すために 2 つのストップ ビットが送信されます。

ストップ ビットに加えて、シリアル データ形式は、スタート ビット、5 個から 8 個のデータ ビット、パリティ ビット (必要な場合) で構成されます。DataBits プロパティを使用してデータ ビット数を指定し、Parity プロパティを使用してパリティ チェックのタイプを指定します。

次の構文を使用して、シリアル オブジェクトを作成した後に StopBits プロパティを設定することもできます。

s.StopBits = 2;

例: s.StopBits = 2;

データ型: double

終端文字。string または cell 配列として指定します。Terminator を 0 ~ 127 の範囲の整数値に構成します。これは、文字に対する ASCII コードを示します。または Terminator を ASCII 文字に構成することもできます。たとえば、Terminator をキャリッジ リターンに構成するには、値を CR または 13 に指定します。Terminator を改行に構成するには、値を LF または 10 に指定します。TerminatorCR/LF または LF/CR に設定することもできます。TerminatorCR/LF の場合は、終端文字はキャリッジ リターン (CR) の後に改行文字 (LF) が続きます。終端文字が LF/CR の場合は、終端文字は改行文字 (LF) の後にキャリッジ リターン (CR) が続きます。これらの 2 つの値と等価な整数はないことに注意してください。

また、Terminator を 1 行 2 列の cell 配列に設定できます。セルの最初の要素は読み取り終端文字で、cell 配列の 2 番目の要素は書き込み終端文字です。

関数 fprintf を使用して書き込み操作を実行する際、発生するすべての \nTerminator プロパティ値で置き換えられます。%s\n は、関数 fprintf に対する既定の形式です。関数 fgetlfgetsfscanf を使用した読み取り操作は、Terminator の値が読み取られると終了します。終端文字は、二項演算では無視されます。

BytesAvailableFcnModeterminator に設定されているとき、終端文字を使用してバイト利用可能なイベントを生成することもできます。

次の構文を使用して、シリアル オブジェクトを作成した後に Terminator プロパティを設定することもできます。

s.Terminator = 'CR';

例: s.Terminator = 'CR';

データ型: char | string | cell

読み取りと書き込みのプロパティ

すべて展開する

この プロパティ は読み取り専用です。

入力バッファーで利用可能なバイト数。double として指定します。この読み取り専用プロパティは、入力バッファーから現在読み取り可能なバイト数を示します。プロパティ値は、入力バッファーが満たされると連続的に更新され、関数 fopen が実行された後に 0 に設定されます。

データを非同期で読み取るときにのみ BytesAvailable を使用できます。これは、データを同期して読み取る場合、入力バッファーが空になった後にのみ制御が MATLAB® コマンド ラインに戻るためです。そのため、BytesAvailable の値は常に 0 です。

BytesAvailable の値は、ゼロから入力バッファーのサイズまでの範囲です。入力バッファーのサイズを指定するには、InputBufferSize プロパティを使用します。読み取られる値の総数を返すには、ValuesReceived プロパティを使用します。

例: s.BytesAvailable

データ型: double

入力バッファーのサイズ (バイト)。double として指定します。InputBufferSize は、読み取り操作中に入力バッファーに保存可能なバイトの総数として構成します。

読み取り操作は、入力バッファーに保存されたデータ量が InputBufferSize の値と等しくなったときに終了します。関数 fgetlfget または fscanf を使用してテキスト データを読み取ることができます。関数 fread を使用してバイナリ データを読み取ることができます。

InputBufferSize は、シリアル ポート オブジェクトがデバイスから切断されているときにのみ設定可能です。これは、関数 fopen を呼び出す前に設定できます。関数 fclose を使用してオブジェクトを切断します。切断されたオブジェクトは、Status プロパティの値が closed です。

データが入力バッファーにあるときに InputBufferSize を設定する場合、そのデータは消去されます。

例: s.InputBufferSize = 768;

データ型: double

非同期の読み取り操作が連続的に行われるか、手動で行われるかを 'manual' または 'continuous' として指定します。ReadAsyncModecontinuous である場合は、シリアル ポート オブジェクトは、データが読み取り可能であるかどうかを決定するために連続的にデバイスにクエリします。データが読み取り可能の場合は、自動的に読み取られ、入力バッファーに保存されます。実行された場合、関数 readasync は無視されます。

ReadAsyncModemanual の場合は、オブジェクトはデータが読み取り可能であるかどうかをデバイスにクエリしません。代わりに、手動で関数 readasync を実行して、非同期読み取り操作を行わなければなりません。readasync は終端文字をチェックするため、この関数は処理が遅くなる場合があります。速度を上げるには、ReadAsyncModecontinuous に構成します。

メモ

デバイスがデータ送信の準備ができている場合は、ReadAsyncMode の値にかかわらず送信します。そのため、ReadAsyncModemanual で読み取り操作が進行中でない場合は、データは失われる場合があります。すべての送信データが入力バッファーに保存されるように保証するには、ReadAsyncModecontinuous に構成します。

入力バッファー内のデータ量を決定するには、BytesAvailable プロパティを使用します。いずれの ReadAsyncMode の値に対しても、fscanffgetlfgetsfread などの同期読み取り関数を使用して MATLAB ワークスペースにデータを置くことができます。

例: s.ReadAsyncMode = 'manual';

データ型: char | string

読み取りまたは書き込みの操作完了までの待ち時間。double として指定します。Timeout を、読み取りまたは書き込みの操作完了までの最大待ち時間 (秒) になるように設定します。10 秒の既定値は、別の値を指定しない場合に使用されます。タイムアウトは秒単位に丸められます。

タイムアウトが発生した場合、読み取りまたは書き込みの操作は中止されます。さらに、タイムアウトが非同期の読み取りまたは書き込みの操作中に発生した場合は、以下のようになります。

  • エラー イベントが生成されます。

  • ErrorFcn に対して指定されたコールバック関数が実行されます。

例: s.Timeout = 30;

データ型: double

この プロパティ は読み取り専用です。

非同期の読み取りまたは書き込み操作のステータス。idlereadwrite または read&write として指定します。この読み取り専用プロパティは、非同期の読み取りと書き混み操作が進行しているかどうかを示します。TransferStatusidle の場合は、進行中の非同期読み取りまたは書き込み操作はありません。read の場合は、非同期読み取り操作が進行中です。write の場合は、非同期書き込み操作が進行中です。TransferStatusread&write の場合は、非同期の読み取りと書き込みの両方の操作が進行中です。

関数 fprintf または fwrite を使用してデータを非同期的に書き込むことができます。関数 readasync を使用するか、ReadAsyncMode プロパティを continuous に設定すると、非同期的にデータを読み込むことができます。関数 readasync が実行中のとき、TransferStatus はデータが入力バッファーに入力されていなくても読み取り中であることを示す場合があります。ReadAsyncModecontinuous の場合、TransferStatus はデータが入力バッファー内にあるときにのみ、データが読み取られることを示します。

シリアル ポートは別々の読み取りと書き込みのピンをもつので、非同期読み取りと非同期書き込みの操作を同時に実行できます。

可能な値の一覧です。

{idle}

非同期操作は進行中ではありません。

read

非同期読み取り操作が進行中です。

write

非同期書き込み操作が進行中です。

read&write

非同期の読み取りと書き込みの操作が進行中です。

例: s.TransferStatus

データ型: char | string

この プロパティ は読み取り専用です。

デバイスから読み取られる値の総数。double として指定します。これは読み取り専用プロパティです。この値は読み取り操作が正常終了するたびに更新され、関数 fopen の発行後 0 に設定されます。終端文字がデバイスから読み取られた場合は、この値は ValuesReceived によって反映されます。

データを非同期的に読み取る場合は、BytesAvailable プロパティを使用して入力バッファーで現在利用可能なバイト数を返します。

読み取り操作の実行時に、受信されたデータは、バイトではなく値で表されます。値は、1 つ以上のバイトで構成されます。たとえば、1 つの値 uint32 は、4 つのバイトで構成されます。

たとえば、シリアル ポート COM1 に関連付けられているシリアル ポート オブジェクトを作成して、接続を開きます。

s = serial('COM1');
fopen(s)

RS232? コマンドを書き込み、関数 fscanf を使用して応答を読み取る場合、機器は LF 終端文字を送信するように構成されるので ValuesReceived17 です。

fprintf(s,'RS232?')
out = fscanf(s)
out =
9600;0;0;NONE;LF
s.ValuesReceived
ans =
    17

例: s.ValuesReceived

データ型: double

この プロパティ は読み取り専用です。

現在出力バッファーにあるバイト数。double として指定します。この読み取り専用プロパティは、デバイスに書き込まれるのを待つ出力バッファー内の現在のバイトの数を示します。プロパティ値は、出力バッファーが満たされるか空のときに連続的に更新され、関数 fopen が実行された後で 0 に設定されます。

データを非同期で書き込むときにのみ BytesToOutput を使用できます。これは、データを同期して書き込む場合、出力バッファーが空になった後にのみ制御が MATLAB コマンド ラインに戻るためです。そのため、BytesToOutput の値は常に 0 です。

デバイスに書き込まれる値の総数を返すには、ValuesSent プロパティを使用します。

メモ

出力バッファーに入る量よりも多くのデータを書き込もうとした場合は、エラーが返され、BytesToOutput0 です。OutputBufferSize プロパティを使用して、出力バッファーのサイズを指定します。

例: s.BytesToOutput

データ型: double

出力バッファーのサイズ (バイト)。double として指定します。OutputBufferSize は、書き込み操作中に出力バッファーに保存可能なバイトの総数として設定します。

OutputBufferSize は、シリアル ポート オブジェクトがデバイスから切断されているときにのみ設定可能です。これは、関数 fopen を呼び出す前に設定できます。関数 fclose を使用してオブジェクトを切断します。切断されたオブジェクトは、Status プロパティの値が closed です。

出力バッファーが書き込まれるすべてのデータを保持できない場合は、エラーが発生します。関数 fprintf を使用してテキスト データを書き込みます。関数 fwrite を使用してバイナリ データを書き込みます。

例: s.OutputBufferSize = 256;

データ型: double

この プロパティ は読み取り専用です。

デバイスに書き込まれる値の総数。double として指定します。これは読み取り専用プロパティです。この値は書き込み操作が正常終了するたびに更新され、関数 fopen の発行後 0 に設定されます。終端文字を書き込む場合は、ValuesSent はこの値を反映します。

データを非同期的に書き込む場合は、BytesToOutput プロパティを使用して出力バッファーで現在利用可能なバイト数を返します。

書き込み操作の実行時に、送信されたデータは、バイトではなく値で表されます。値は、1 つ以上のバイトで構成されます。たとえば、1 つの値 uint32 は、4 つのバイトで構成されます。

たとえば、シリアル ポート COM1 に関連付けられているシリアル ポート オブジェクトを作成して、接続を開きます。

s = serial('COM1');
fopen(s)

関数 fprintf を使用して *IDN? コマンドを書き込む場合には、既定のデータ形式が %s\n で、終端文字が書き込まれたため、ValuesSent6 です。

fprintf(s,'*IDN?')
s.ValuesSent
ans =
    6

例: s.ValuesSent

データ型: double

この プロパティ は読み取り専用です。

シリアル ポート デバイスの接続ステータス。closed または open が返されます。この読み取り専用プロパティは、シリアル ポート オブジェクトがデバイスに接続されているかどうかを示します。Statusclosed の場合は、シリアル ポート オブジェクトはデバイスに接続されていません。Statusopen の場合は、シリアル ポート オブジェクトはデバイスに接続されます。

データの読み取りまたは書き込み前に、関数 fopen を使用してシリアル ポート オブジェクトをデバイスに接続しなければなりません。関数 fclose を使用してデバイスからシリアル ポート オブジェクトを切断します。

例: s.Status

データ型: char | string

コールバック プロパティ

すべて展開する

ブレーク割り込みイベントの発生時に実行するコールバック関数。関数ハンドルとして指定します。ブレーク割り込みイベントは、受信したデータが 1 バイトに対する送信時間よりも長くオフ (スペース) 状態であるときに、シリアル ポートによって生成されます。

メモ

ブレーク割り込みイベントは、シリアル ポート セッション中にいつでも生成される可能性があります。

RecordStatus プロパティ値が on で、ブレーク割り込みイベントが発生する場合は、レコード ファイルは以下の情報を記録します。

  • BreakInterrupt のイベント タイプ

  • イベントの発生時刻 (日-月-年 時:分:秒:ミリ秒)

データ型: function_handle

バイト利用可能なイベントの発生時に実行するコールバック関数。関数ハンドルとして指定します。バイトを利用可能なイベントは、BytesAvailableFcnCount プロパティで指定されたバイト数が入力バッファーで利用可能なとき、または BytesAvailableFcnMode プロパティで指定された終端文字が読み取られた後に発生します。

メモ

バイトを利用可能なイベントは、非同期の読み取り操作に対してのみ生成されます。

RecordStatus プロパティ値が on で、バイトを利用可能なイベントが発生する場合は、レコード ファイルは以下の情報を記録します。

  • BytesAvailable のイベント タイプ

  • イベントの発生時刻 (日-月-年 時:分:秒:ミリ秒)

メモ

127 文字数を超える ASCII 値を使用することはできません。この関数は、バイナリ文字数 127 に制限されています。

例: s.BytesAvailableFcn = @instrcallback;

データ型: function_handle

バイト利用可能なイベントを生成するために入力バッファーで使用できるバイト数。数値として指定します。

あるバイト数が利用可能になった後、または終端文字が読み取られた後のどちらにバイトを利用可能なイベントが発生するかを指定するには BytesAvailableFcnMode プロパティを使用します。

バイトを利用可能なイベントは、BytesAvailableFcn プロパティに対して指定されたコールバック関数を実行します。

オブジェクトがデバイスから切断されているときにのみ BytesAvailableFcnCount を構成できます。関数 fclose を使用してオブジェクトを切断します。切断されたオブジェクトは、Status プロパティの値が closed です。

例: s.BytesAvailableFcnCount = 40;

データ型: double

バイト利用可能なイベントを生成するバイト利用可能な関数の種類。'terminator' または 'byte' として指定します。BytesAvailableFcnMode'terminator' の場合は、バイト利用可能なイベントは Terminator プロパティで指定された終端文字に達したときに発生します。BytesAvailableFcnMode'byte' の場合は、バイト利用可能なイベントは BytesAvailableFcnCount プロパティで指定されたバイト数が利用可能なときに発生します。

バイトを利用可能なイベントは、BytesAvailableFcn プロパティに対して指定されたコールバック関数を実行します。

オブジェクトがデバイスから切断されているときにのみ BytesAvailableFcnMode を構成できます。関数 fclose を使用してオブジェクトを切断します。切断されたオブジェクトは、Status プロパティの値が closed です。

例: s.BytesAvailableFcnMode = 'byte';

データ型: char | string

エラー イベントの発生時に実行するコールバック関数。関数ハンドルとして指定します。

メモ

エラー イベントは、非同期読み取りおよび書き込み操作に対してのみ生成されます。

エラー イベントは、タイムアウトの発生時に生成されます。タイムアウトは、読み取りまたは書き込み操作が Timeout プロパティで指定した時間内に終了しなかった場合に発生します。エラー イベントは、無効なプロパティ値の設定などの構成エラーに対して生成されません。

RecordStatus プロパティ値が on で、エラー イベントが発生する場合は、レコード ファイルは以下の情報を記録します。

  • イベント タイプを Error とする

  • エラー メッセージ

  • イベントの発生時刻 (日-月-年 時:分:秒:ミリ秒)

データ型: function_handle

出力が空のイベントの発生時に実行するコールバック関数。関数ハンドルとして指定します。出力が空のイベントは、最後のバイトが出力バッファーからデバイスに送信されたときに発生します。

メモ

出力が空であるイベントは、非同期の書き込み操作に対してのみ生成されます。

RecordStatus プロパティ値が on で、出力が空であるイベントが発生する場合は、レコード ファイルは以下の情報を記録します。

  • イベント タイプを OutputEmpty とする

  • イベントの発生時刻 (日-月-年 時:分:秒:ミリ秒)

データ型: function_handle

ピン ステータス イベントの発生時に実行するコールバック関数。関数ハンドルとして指定します。ピン ステータス イベントは、Carrier Detect (CD)、Clear to Send (CTS)、Data Set Ready (DSR)、Ring Indicator (RI) のピンの状態が変更されたときに発生します。シリアル ポート ピンは、アサートされたとき、またはアンアサートされたときに状態を変更します。これらのピンの状態に関する情報は、PinStatus プロパティに記録されます。

メモ

ピン ステータス イベントは、シリアル ポート セッション中にいつでも生成されます。

RecordStatus プロパティ値が on で、ピンのステータス イベントが発生する場合は、レコード ファイルは以下の情報を記録します。

  • イベント タイプを PinStatus とする

  • 状態が変化したピン、およびピンの状態を on または off とする

  • イベントの発生時刻 (日-月-年 時:分:秒:ミリ秒)

データ型: function_handle

タイマー イベントの発生時に実行するコールバック関数。関数ハンドルとして指定します。タイマー イベントは、TimerPeriod プロパティで指定した時間が経過したときに発生します。時間は、シリアル ポート オブジェクトが関数 fopen を使用してデバイスに接続されたときからの相対時間です。

メモ

タイマー イベントは、シリアル ポート セッション中にいつでも生成できます。

RecordStatus プロパティ値が on で、タイマー イベントが発生する場合は、レコード ファイルは以下の情報を記録します。

  • イベント タイプを Timer とする

  • イベントの発生時刻 (日-月-年 時:分:秒:ミリ秒)

システムの処理速度が大幅に低下した場合や、TimerPeriod 値が小さすぎる場合は、一部のタイマー イベントが処理されないことがあります。

データ型: function_handle

タイマー イベント間の時間。秒数として指定します。これは、TimerFcn に対して指定されたコールバック関数が呼び出されるまでの時間です。時間は、シリアル ポート オブジェクトが関数 fopen を使用してデバイスに接続されたときからの相対時間です。

システムの処理速度が大幅に低下した場合や、TimerPeriod 値が小さすぎる場合は、一部のタイマー イベントが処理されないことがあります。

データ型: double

制御ピン プロパティ

すべて展開する

DTR ピンの状態。on または off として指定します。DataTerminalReadyon の場合、Data Terminal Ready (DTR、データ端末レディ) ピンはアサートされます。DataTerminalReadyoff の場合は、DTR ピンはアンアサートされます。

通常の利用法では、DTR と Data Set Ready (DSR、データセット レディ) ピンは共に機能し、デバイスが接続され電源が入っているかどうかを通知するために利用されます。ただし、DTR ピンを特定の方法で利用する必要があることを示す記述は RS-232 標準にはありません。たとえば、DTR と DSR はハンドシェーキング用に利用することがあります。特定のピンの動作を決定するには、デバイスのドキュメンテーションを参照してください。

PinStatus プロパティを使用して DSR ピンの値を返します。

例: s.DataTerminalReady = 'off';

データ型: char | string

データ フロー制御法。nonehardware、または software として指定します。FlowControlnone の場合は、データ フロー制御 (ハンドシェーキング) は使用されません。FlowControlhardware である場合は、データ フローの制御にハードウェア ハンドシェーキングが使用されます。FlowControlsoftware である場合は、データ フローの制御にソフトウェア ハンドシェーキングが使用されます。

ハードウェア ハンドシェーキングは、一般的に Request to Send (RTS) ピンと Clear to Send (CTS) ピンを使用してデータ フローを制御します。ソフトウェア ハンドシェーキングは、制御文字 (Xon と Xoff) を使用してデータ フローを制御します。

PinStatus プロパティを使用して、CTS ピンの値を返すことができます。RequestToSend プロパティを使用して、RTS ピンの値を指定できます。ただし、FlowControlhardware で、RequestToSend に対して値を指定する場合は、その値は与えられない場合があります。

メモ

デバイスをハードウェア ハンドシェーキングとソフトウェア ハンドシェーキング用に同時に構成することは可能ですが、MATLAB はこの動作はサポートしません。

例: s.FlowControl = 'hardware';

データ型: char | string

この プロパティ は読み取り専用です。

CD、CTS、DSR および RI ピンの状態。構造体として返されます。この読み取り専用プロパティは、CarrierDetectClearToSendDataSetReadyRingIndicator フィールドを含む構造体配列を返します。これらのフィールドは、それぞれ Carrier Detect (CD)、Clear to Send (CTS)、Data Set Ready (DSR)、Ring Indicator (RI) の各ピンの状態を示します。

PinStatus は、これらのフィールドに対して on または off を設定します。値 on は、関連付けられているピンがアサートされることを示します。値 off は、関連付けられているピンがアンアサートされることを示します。ピン ステータス イベントは、これらのピンのいずれかの状態が変化したときに発生します。ピン ステータス イベントは、PinStatusFcn で指定したコールバック関数を実行します。

通常の利用法では、Data Terminal Ready (DTR) ピンと DSR ピンは共に機能し、Request to Send (RTS) ピンと CTS ピンが共に機能します。DataTerminalReady プロパティを使用して DTR ピンの状態を指定できます。RequestToSend プロパティを使用して RTS ピンの状態を指定できます。

例: s.PinStatus

データ型: struct

RTS ピンの状態。on または off として指定します。RequestToSendon の場合は、Request to Send (RTS) ピンがアサートされます。RequestToSendoff の場合は、RTS ピンはアンアサートされます。

通常の利用法では、RTS ピンと Clear to Send (CTS) ピンは共に機能し、データ送信に対する標準のハンドシェーキングとして利用されます。この場合に、RTS と CTS は DTE と DCE によって自動的に管理されます。ただし、RS-232 標準では、RTS ピンを特定の方法で使用することを要求していません。そのため、RequestToSend の値を手動で構成する場合は、この値は非標準の操作用になります。

デバイスが標準的な方法でハードウェア ハンドシェーキングを利用しない場合は、RequestToSend プロパティを手動で構成し、FlowControl プロパティを none に構成する必要があります。そうでない場合は、ユーザーが指定する RequestToSend の値は与えられない場合があります。特定のピンの動作については、お使いのデバイスのドキュメンテーションを参照してください。

PinStatus プロパティを使用して、CTS ピンの値を返すことができます。

例: s.RequestToSend = 'off';

データ型: char | string

記録プロパティ

すべて展開する

レコード ファイルに保存される情報の詳細レベル。compact または verbose として指定します。RecordDetailcompact の場合は、デバイスに書き込まれる値の数、デバイスから読み取られる値の数、値のデータ型、イベント情報がレコード ファイルに保存されます。RecordDetailverbose の場合は、デバイスに書き込まれるデータ、デバイスから読み取られるデータもレコード ファイルに保存されます。

可能な値の一覧です。

{compact}

デバイスに書き込まれる値の数、デバイスから読み取られる値の数、値のデータ型、イベント情報がレコード ファイルに保存されます。

verbose

デバイスに書き込まれるデータ、デバイスから読み取られるデータもレコード ファイルに保存されます。

例: s.RecordDetail = 'verbose';

データ型: char | string

データおよびイベント情報のレコード ファイルへの保存方法。overwriteappend、または index として指定します。RecordModeoverwrite の場合、レコード ファイルは記録が開始されるたびに上書きされます。RecordModeappend の場合は、データは記録が開始されるたびにレコード ファイルに追加されます。RecordModeindex の場合は、記録が開始されるたびにインデックス付きのファイル名をもつ異なるレコード ファイルが作成されます。

RecordMode は、オブジェクトが記録中でないときにのみ構成できます。関数 record を使用して記録を終了します。記録中でないオブジェクトは、RecordStatus プロパティの値が off です。

RecordName プロパティを使用してレコード ファイル名を指定します。インデックス付きのファイル名は、所定の規則に従います。

可能な値の一覧です。

{overwrite}

レコード ファイルは上書きされます。

append

データは既存のレコード ファイルに追加されます。

index

それぞれインデックス付きのファイル名をもつ別のレコード ファイルが作成されます。

たとえば、レコード プロパティを使用してシリアル データを記録します。シリアル ポート オブジェクトを作成して接続を開きます。

s = serial('COM1');
fopen(s)

RecordName プロパティを使用してレコード ファイル名を指定し、RecordModeindex に構成して記録を開始します。

s.RecordName = 'MyRecord.txt';
s.RecordMode = 'index';
record(s)

レコード ファイル名は、記録がオフになった後でインデックス付きファイル名を使用して自動的に更新されます。

record(s,'off')
s.RecordName
ans =
MyRecord01.txt

周辺デバイスから s を切断し、メモリから s を削除します。また、MATLAB ワークスペースからも s を削除します。

fclose(s)
delete(s)
clear s

例: s.RecordMode = 'index';

データ型: char | string

レコード ファイル名。string として指定します。ファイル名がオペレーティング システムによってサポートされている限り、ディレクトリ パスを含む任意の値を RecordName に対して指定できます。

既定のレコード ファイル名は record.txt です。これは、データ ファイルを記録するときに、別の名前を指定しない場合に使用します。

MATLAB は、オペレーティング システムでサポートされている任意のファイル名をサポートします。関数 type を使用してファイルにアクセスできます。たとえば、レコード ファイルに MyRecord.txt という名前を付ける場合、このファイルを MATLAB コマンド ラインで入力するには、次のように入力します。

type('MyRecord.txt')

データとイベント情報が、1 つのディスク ファイルあるいは複数のディスク ファイルのいずれかに保存されることを RecordMode プロパティを使用して指定できます。RecordModeindex の場合は、ファイル名は所定の規則に従います。

RecordName は、オブジェクトが記録中でないときにのみ構成できます。関数 record を使用して記録を終了します。記録中でないオブジェクトは、RecordStatus プロパティの値が off です。

例: s.RecordName = 'MonthlyDataFile_April';

データ型: char | string

この プロパティ は読み取り専用です。

シリアル データとイベント情報の記録のステータス。on または off として返されます。この読み取り専用プロパティは、関数 record によって制御される記録がオンとオフのどちらであるかを示します。RecordStatusoff の場合は、データとイベント情報はレコード ファイルに保存されません。RecordStatuson の場合は、データとイベント情報は RecordName で指定されたレコード ファイルに保存されます。

記録を開始または完了するには、関数 record を使用します。RecordStatus は、自動的に構成されて記録の状態を反映します。

例: s.RecordStatus

データ型: char | string

バージョン履歴

R2006a より前に導入

すべて折りたたむ

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

serial およびそのオブジェクト プロパティは推奨されません。代わりに、serialport およびそのプロパティを使用してください。

この例では、推奨される機能を使用してシリアル ポート デバイスに接続する方法を説明します。

機能代替方法
s = serial("COM1");
s.BaudRate = 115200;
fopen(s)
s = serialport("COM1",115200);

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