Main Content

serial

(削除予定) シリアル ポート オブジェクトの作成

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

説明

s = serial('port') は、'port' で指定されたシリアル ポートに関連付けられているシリアル ポート オブジェクト s を作成します。'port' が存在しない場合、または使用中の場合、シリアル ポート オブジェクトをデバイスに接続することはできません。

s = serial('port',Name,Value) は、指定したプロパティ名とプロパティ値をもつシリアル ポート オブジェクトを作成します。無効なプロパティ名やプロパティ値が指定された場合、エラーが返され、シリアル ポート オブジェクトは作成されません。

すべて折りたたむ

この例では、シリアル ポート オブジェクトの作成方法を説明します。

関数 seriallist を使用して、使用可能なシリアル ポートを検索します。

seriallist

シリアル ポート オブジェクト s を作成してシリアル ポート COM1 に関連付けます。このポートを最初の引数として指定してシリアル ポート オブジェクトを作成しなければなりません。

s = serial('COM1');

シリアル ポート COM3 に関連付けられたシリアル ポート オブジェクト s2 を作成して、プロパティを設定します。オブジェクトの作成時にオプションで、通信プロパティを端子引数の後に名前と値のペアを指定して設定できます。この例では、ボー レートを 4800、終端文字を CR に設定します。これらの値はオブジェクトの出力で確認できます。

s2 = serial('COM3','BaudRate',4800,'Terminator','CR')

入力引数

すべて折りたたむ

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

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

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

例: s = serial('COM1')

データ型: char | string

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: s = serial('COM2','BaudRate',1200,'DataBits',7);

関数 serial で使用できるシリアル ポート オブジェクト プロパティのリストについては、serial のプロパティを参照してください。

メモ

ポートはシリアル オブジェクトの作成に使用される最初の引数でなければなりません。その後、サポートされている任意の数の名前と値のペアをポートに続けることができます。

ビットが送信されるレート。'BaudRate' と 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 = serial('COM1','BaudRate',4800);

データ型: double

デバイスのバイト順。'ByteOrder' と、littleEndian または bigEndian で構成されるコンマ区切りのペアとして指定します。ByteOrderlittleEndian の場合は、デバイスは最初のバイトを最初のメモリ アドレスに保存します。ByteOrderbigEndian の場合は、デバイスは最後のバイトを最初のメモリ アドレスに保存します。

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

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

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

s.ByteOrder = 'bigEndian';

メモ

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

例: s = serial('COM1','ByteOrder','bigEndian');

データ型: char | string

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

メモ

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

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

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

s.DataBits = 7;

例: s = serial('COM1','DataBits',7);

データ型: double

パリティ チェックのタイプ。'Parity' と、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 = serial('COM1','Parity','even');

データ型: char | string

バイトの終了を示すためのビット数。'StopBits'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 = serial('COM1','StopBits',2);

データ型: double

終端文字。'Terminator' と string で構成されるコンマ区切りのペアとして指定します。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 = serial('COM1','Terminator','CR');

データ型: char | string

ヒント

関数 serial で使用できるシリアル ポート オブジェクト プロパティのリストについては、serial のプロパティを参照してください。

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

バージョン履歴

R2006a より前に導入

すべて展開する

R2022a: 警告

serial は将来のリリースで削除される予定です。代わりに serialport を使用してください。

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

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

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

参考

関数