ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

シリアル I/O 入門

例: 入門

この例は、基本的なシリアル ポート コマンドをいくつか示しています。

メモ

この例は、Windows® プラットフォーム上で表示されます。

シリアル ポート COM1 に接続されているデバイスがあり、そのボー レートが 4800 に構成されている場合は、次の例を実行します。

s = serial('COM1');
set(s,'BaudRate',4800);
fopen(s);
fprintf(s,'*IDN?')
out = fscanf(s);
fclose(s)
delete(s)
clear s

*IDN? コマンドはデバイスに識別情報をクエリし、それは out に返されます。お使いのデバイスがこのコマンドをサポートしない、あるいは別のシリアル ポートに接続している場合は、それに合わせて前の例を変更します。

メモ

*IDN? は Standard Commands for Programmable Instruments (SCPI) 言語でサポートされているコマンドの 1 つで、多くのモデム装置で使用されています。お使いのデバイスが SCPI 言語をサポートしているかどうかは、デバイスのドキュメンテーションを参照してください。

シリアル ポート セッション

この例は、シリアル ポート タスクを最初から最後まで行うための手順について説明します。

シリアル ポート "セッション" には、シリアル ポートに接続されているデバイスと通信するときに行うすべての手順を実行します。手順は次のとおりです。

  1. シリアル ポートの検索 — 関数 seriallist を使用してシステムのシリアル ポートのリストを表示します。

  2. シリアル ポート オブジェクトの作成 — serial 作成関数を使用して特定のシリアル ポートにシリアル ポート オブジェクトを作成します。

    必要に応じてオブジェクト作成中にプロパティを構成します。特に、ボー レート、データ ビット数などのシリアル ポート通信に関連するプロパティを構成します。

  3. デバイスへの接続 — 関数 fopen を使用してシリアル ポート オブジェクトをデバイスに接続します。

    オブジェクトが接続されたら、プロパティ値、データ読み取り、データ書き込みを構成することで、必要なデバイス設定を変更します。

  4. プロパティの構成 — 目的のシリアル ポート オブジェクトの動作を達成するために、関数 set またはドット表記を使用してプロパティに値を指定します。

    特に、オブジェクト作成中または直後に多くのプロパティを構成できます。その逆に、お使いのデバイス設定とシリアル ポート アプリケーションの要件によっては、既定のプロパティ値をそのまま使用し、この手順を省略することも可能です。

  5. データの書き込みと読み取り — 関数 fprintf または関数 fwrite を使用してデバイスにデータを書き込みます。また、関数 fgetl、関数 fgets、関数 fread、関数 fscanf または関数 readasync を使用してデバイスからデータを読み取ります。

    シリアル ポート オブジェクトは以前に構成されたプロパティ値または既定のプロパティ値に従って動作します。

  6. 切断とクリーンアップ — シリアル ポート オブジェクトが不要になったら、関数 fclose を使用してデバイスから切断し、関数 delete を使用してメモリから削除し、clear コマンドを使用して MATLAB® ワークスペースから削除します。

このシリアル ポート セッションは多くのシリアル ポート ドキュメンテーションの例で補強されています。上記の手順を使用した基本的な例を見るには、例: 入門を参照してください。

プロパティ値の設定と取得

この例では、シリアル ポートのプロパティ名やプロパティ値を表示する方法、プロパティに値を割り当てる方法を説明します。

プロパティ値を設定することによって目的のシリアル ポート オブジェクト動作を確立します。プロパティ値の表示や設定は、関数 set や関数 get、あるいはドット表記を使用して行うことができます。

プロパティ名とプロパティ値の表示

シリアル ポート オブジェクトを作成したら、関数 set を使用して、構成可能なプロパティすべてをコマンド ラインに表示することができます。さらに、プロパティに有限な文字列値が設定されている場合は、set はそれらの値も表示します。

s = serial('COM1');
set(s)
    ByteOrder: [ {littleEndian} | bigEndian ] 
    BytesAvailableFcn
    BytesAvailableFcnCount
    BytesAvailableFcnMode: [ {terminator} | byte ]
    ErrorFcn
    InputBufferSize
    Name
    OutputBufferSize
    OutputEmptyFcn
    RecordDetail: [ {compact} | verbose ]
    RecordMode: [ {overwrite} | append | index ]
    RecordName
    Tag
    Timeout
    TimerFcn
    TimerPeriod
    UserData

    SERIAL specific properties:
    BaudRate
    BreakInterruptFcn
    DataBits
    DataTerminalReady: [ {on} | off ]
    FlowControl: [ {none} | hardware | software ]
    Parity: [ {none} | odd | even | mark | space ]
    PinStatusFcn
    Port
    ReadAsyncMode: [ {continuous} | manual ]
    RequestToSend: [ {on} | off ]
    StopBits
    Terminator

関数 get を使用して 1 つ以上のプロパティとその現在の値をコマンド ラインに表示します。すべてのプロパティとその現在の値を表示するには、次のようにします。

get(s)
    ByteOrder = littleEndian
    BytesAvailable = 0
    BytesAvailableFcn = 
    BytesAvailableFcnCount = 48
    BytesAvailableFcnMode = terminator
    BytesToOutput = 0
    ErrorFcn = 
    InputBufferSize = 512
    Name = Serial-COM1
    OutputBufferSize = 512
    OutputEmptyFcn = 
    RecordDetail = compact
    RecordMode = overwrite
    RecordName = record.txt
    RecordStatus = off
    Status = closed
    Tag = 
    Timeout = 10
    TimerFcn = 
    TimerPeriod = 1
    TransferStatus = idle
    Type = serial
    UserData = []
    ValuesReceived = 0
    ValuesSent = 0

    SERIAL specific properties:
    BaudRate = 9600
    BreakInterruptFcn = 
    DataBits = 8
    DataTerminalReady = on
    FlowControl = none
    Parity = none
    PinStatus = [1x1 struct]
    PinStatusFcn = 
    Port = COM1
    ReadAsyncMode = continuous
    RequestToSend = on
    StopBits = 1
    Terminator = LF

単一のプロパティとその現在の値を表示するには、get にプロパティ名を指定します。

get(s,'OutputBufferSize')
ans =
   512

複数のプロパティの現在値を表示するには、cell 配列の要素にプロパティ名を含めます。

get(s,{'Parity','TransferStatus'})
ans = 
    'none'    'idle'

ドット表記を使用して単一のプロパティ値を表示します。

s.Parity
ans =
none

プロパティ値の構成

関数 set を使用してプロパティ値を構成できます。

set(s,'BaudRate',4800);

ドット表記を使用することもできます。

s.BaudRate = 4800;

複数のプロパティの値を構成するには、複数のプロパティ名/プロパティ値のペアを set に指定します。

set(s,'DataBits',7,'Name','Test1-serial')

ドット表記を使用する場合は一度に 1 つのプロパティ値しか構成できないことに注意してください。

実際には、シリアル ポート オブジェクトが存在する限り、オブジェクト作成中も含め、いつでも、いくつでもプロパティを構成することができます。ただし、オブジェクトがデバイスに接続されている間または情報がディスクに記録されている間には、構成できないプロパティもあります。プロパティがいつ構成可能かについてはプロパティ リファレンスを参照してください。

プロパティ名の指定

シリアル ポート プロパティ名は大文字と小文字を組み合わせて表示されます。これによりプロパティ名が読みやすくなりますが、プロパティ名を指定するときは大文字だけ使用しても小文字だけ使用しても構いません。たとえば、BaudRate プロパティを構成するには、以下のようにします。

s.BaudRate = 4800;
s.baudrate = 4800;

既定のプロパティ値

プロパティに値を明示的に定義しなかった場合は、常に既定値が使用されます。すべての構成可能なプロパティは、既定値をもっています。

メモ

お使いのオペレーティング システムは、ボー レートなど、すべてのシリアル ポート設定の既定値を提供します。ただし、これらの設定は MATLAB コードでオーバーライドされますが、シリアル ポートのアプリケーションには影響しません。

プロパティに有限な文字列値がある場合、既定値は {} で囲まれます。たとえば、Parity プロパティの既定値は none です。

set(s,'Parity')
[ {none} | odd | even | mark | space ]

プロパティのリファレンス ページにすべてのプロパティの既定値が記載されています。