Main Content

serialport インターフェイスへのコードの遷移

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

削除される機能

ValuesReceived および ValuesSent プロパティは削除される予定です。送信される値の数は、NumBytesAvailable プロパティと使用可能なデータのデータ型を使用して計算できます。たとえば、NumBytesAvailable が 20 バイトの uint32 データの場合、uint32 の値はそれぞれ 4 バイトであるため、送信される値の数は 5 です。

関数 readasync および stopasyncReadAsyncMode および TransferStatus プロパティは削除される予定です。更新後のインターフェイスではデータが非同期的に読み取られます。

BytesToOutputInputBufferSize、および OutputBufferSize プロパティは削除される予定です。バッファー サイズは自動で管理され、必要に応じてサイズが変更されます。

BreakInterruptFcnOutputEmptyFcn、および PinStatusFcn プロパティは削除される予定です。更新後のインターフェイスでは configureCallback を使用してコールバック関数を設定できますが、これらのプロパティについては設定できません。

RecordDetailRecordModeRecordName、および RecordStatus プロパティは削除される予定です。

TimerFcn および TimerPeriod プロパティは削除される予定です。代わりに timer を使用してください。

NameTypeObjectVisibility、および Status プロパティは削除される予定です。

シリアル ポート デバイスの検出

seriallist は削除されます。代わりに serialportlist を使用してください。

既存のシリアル ポート接続の検索

instrfind および instrfindall は削除される予定です。代わりに serialportfind を使用してください。 (R2024a 以降)

シリアル ポート デバイスへの接続

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

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

関数 fopen は更新後のインターフェイスでは使用できません。オブジェクト作成関数 serialport により、オブジェクトの作成とオブジェクトのデバイスへの接続の両方が実行されます。

詳細については、serialport を参照してください。

読み取りと書き込み

これらの例では、ループバック デバイスを使用して、推奨される機能を使ったバイナリの書き込みと読み取り、終端処理のないコマンド文字列の書き込み、および固定長の応答文字列の読み取りを実行する方法を説明します。

機能代替方法
% s is a serial object
fwrite(s,1:5,"uint32")
data = fread(s,5,"uint32")
data =

     1
     2
     3
     4
     5
% s is a serialport object
write(s,1:5,"uint32")
data = read(s,5,"uint32")
data =

     1     2     3     4     5
% s is a serial object
command = "start";
fwrite(s,command,"char")
% s is a serialport object
command = "start";
write(s,command,"char")
% s is a serialport object
command = "start";
write(s,command,"string")
% s is a serial object
length = 5;
resp = fread(s,length,"char")
resp =

   115
   116
    97
   114
   116
resp = char(resp)'
resp =

    'start'
% s is a serialport object
length = 5;
resp = read(s,length,"string")
resp =

    "start"

詳細については、write または read を参照してください。

コマンドの送信

この例では、推奨される機能を使用して、終端処理された SCPI コマンドを書き込む方法を説明します。

機能代替方法
% s is a serial object
s.Terminator = "CR/LF"
channel = 1;
level = 3.44;
fprintf(s,"TRIGGER%d:LEVEL2 %1.2f",[channel,level]);
% s is a serialport object
configureTerminator(s,"CR/LF")
channel = 1;
level = 3.44;
cmd = sprintf("TRIGGER%d:LEVEL2 %1.2f",[channel,level]);
writeline(s,cmd)

writeline は自動的に書き込み終端を追加します。

詳細については、configureTerminator または writeline を参照してください。

終端文字列の読み取り

この例では、推奨される機能を使用して、終端文字列の読み取りを実行する方法を説明します。

機能代替方法
% s is a serial object
fprintf(s,"MEASUREMENT:IMMED:TYPE PK2PK")
a = fscanf(s,"%e",6)
a =

    2.0200

書式指定子 "%e" に対し fscanf は終端を返し、ユーザーはそれを文字列から削除しなければなりません。

% s is a serialport object
writeline(s,"MEASUREMENT:IMMED:TYPE PK2PK")
a = readline(s)
a = 

    "2.0200"
sscanf(a,"%e")
a =

    2.0200
% s is a serial object
fprintf(s,"*IDN?")
a = fgetl(s)
a =

    'TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16'

fgetl は指定の終端に至るまで読み取り、その後終端を破棄します。

% s is a serialport object
writeline(s,"*IDN?")
a = readline(s)
a = 

    "TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04"

readline は指定の終端に至るまで読み取り、その後終端を破棄します。終端を含めるオプションはありません。

% s is a serial object
fprintf(s,"*IDN?")
a = fgets(s)
a =

    'TEKTRONIX,TDS 210,0,CF:91.1CT FV:v1.16 TDS2CM:CMV:v1.04
     '

fgets は指定の終端に至るまで読み取り、その後終端を返します。

詳細については、readline を参照してください。

メモリからのデータのフラッシュ

この例では、推奨される機能を使用して、バッファーからデータをフラッシュする方法を説明します。

機能代替方法
% s is a serial object
flushinput(s)
% s is a serialport object
flush(s,"input")
% s is a serial object
flushoutput(s)
% s is a serialport object
flush(s,"output")
% s is a serial object
flushinput(s)
flushoutput(s)
% s is a serialport object
flush(s)

詳細については、flush を参照してください。

終端の設定

この例では、推奨される機能を使用して終端を設定する方法を説明します。

機能代替方法
% s is a serial object
s.Terminator = "CR/LF";
% s is a serialport object
configureTerminator(s,"CR/LF")
% s is a serial object
s.Terminator = {"CR/LF" [10]};
% s is a serialport object
configureTerminator(s,"CR/LF",10)

詳細については、configureTerminator を参照してください。

コールバック関数のセットアップ

この例ではループバック デバイスを使用し、推奨される機能を使ってコールバック関数をセットアップする方法を説明します。

機能代替方法
s = serial("COM5","BaudRate",115200)
s.BytesAvailableFcnCount = 5
s.BytesAvailableFcnMode = "byte"
s.BytesAvailableFcn = @instrcallback

fopen(s)

function instrcallback(src,evt)
   data = fread(src,src.BytesAvailable)
   disp(evt)
   disp(evt.Data)
end
data =

     1
     2
     3
     4
     5

    Type: 'BytesAvailable'
    Data: [1×1 struct]

    AbsTime: [2019 5 2 16 35 9.6710]
s = serialport("COM5",115200)
configureCallback(s,"byte",5,@instrcallback);

function instrcallback(src,evt)
   data = read(src,src.NumBytesAvailable,"uint8")
   disp(evt)
end
data =

     1     2     3     4     5

  DataAvailableInfo with properties:

    BytesAvailableFcnCount: 5
                   AbsTime: 02-May-2019 15:54:09

詳細については、configureCallback を参照してください。

シリアル ピン ステータスの読み取り

この例では、推奨される機能を使ってシリアル ピン ステータスを読み取る方法を説明します。

機能代替方法
% s is a serial object
s.PinStatus
ans = 

  struct with fields:

    CarrierDetect: 'on'
      ClearToSend: 'on'
     DataSetReady: 'on'
    RingIndicator: 'on'
% s is a serialport object
status = getpinstatus(s)
status = 

  struct with fields:

      ClearToSend: 1
     DataSetReady: 1
    CarrierDetect: 1
    RingIndicator: 1

詳細については、getpinstatus を参照してください。

シリアル DTR ピンと RTS ピンの状態の設定

この例では、推奨される機能を使ってシリアル DTR ピンと RTS ピンの状態を設定する方法を説明します。

機能代替方法
% s is a serial object
s.DataTerminalReady = "on";
% s is a serialport object
setDTR(s,true)
% s is a serial object
s.RequestToSend = "off";
% s is a serialport object
setRTS(s,false)

詳細については、setDTR または setRTS を参照してください。

シリアル ポート接続の切断

関数 fclose は更新後のインターフェイスでは使用できません。代わりに、シリアル ポート接続を切断するには、単一のワークスペースで作業しているか、複数のワークスペースで作業しているかに応じて、clear または delete を使用してください。詳細については、serialport のリファレンス ページで次の例を参照してください。

参考

| | (Instrument Control Toolbox) |

関連するトピック