メインコンテンツ

configureCallback

シリアル ポート デバイスと通信するためのコールバック関数とトリガー条件の設定

説明

configureCallback(device,"terminator",callbackFcnHdl) は、指定されたシリアル ポートから終端文字が読み取り可能になるたびに、ハンドル callbackFcnHdl によって参照されるコールバック関数がトリガーするように設定します。この構文では、deviceBytesAvailableFcnMode プロパティを "terminator" に設定し、BytesAvailableFcn プロパティを callbackFcnHdl に設定します。

configureTerminator を使用して終端文字を設定します。

configureCallback(device,"byte",count,callbackFcnHdl) は、新しい count バイト数のデータが読み取り可能になるたびに、ハンドル callbackFcnHdl によって参照される関数がトリガーするように設定します。この構文では、deviceBytesAvailableFcnMode プロパティを "byte" に設定し、BytesAvailableFcnCount プロパティを count に設定し、BytesAvailableFcn プロパティを callbackFcnHdl に設定します。

configureCallback(device,"off") はコールバックをオフにします。この構文では、deviceBytesAvailableFcnMode プロパティを "off" に設定します。

すべて折りたたむ

シリアル ポート デバイスへの接続を作成します。

device = serialport("COM3",9600)
device = 

  Serialport with properties:

                 Port: "COM3"
             BaudRate: 9600
    NumBytesAvailable: 0

  Show all properties, functions

関数 FcnToCall について、終端文字が読み取り可能なときに実行すると仮定します。入力引数 callbackFcnHndlFcnToCall へのハンドルに設定します。読み取り可能な終端文字があるときにトリガーするように、コールバック関数を設定します。

callbackFcnHndl = @FcnToCall;
configureCallback(device,"terminator",callbackFcnHndl)

プロパティを表示して変更を確認します。

device.BytesAvailableFcnMode
device.BytesAvailableFcn
ans = 

    "terminator"


ans =

  function_handle with value:

    @FcnToCall

コールバックをオフにします。

configureCallback(device,"off")

コールバックがオフになっていることを確認します。

device.BytesAvailableFcnMode
ans = 

    "off"

シリアル ポート デバイスへの接続を作成します。

device = serialport("COM3",9600)
device = 

  Serialport with properties:

                 Port: "COM3"
             BaudRate: 9600
    NumBytesAvailable: 0

  Show all properties, functions

新しいデータの 50 バイトが読み取り可能になるたびにコールバックがトリガーするように設定します。

configureCallback(device,"byte",50,@FcnToCall)

プロパティを表示して変更を確認します。

device.BytesAvailableFcnMode
device.BytesAvailableFcnCount
device.BytesAvailableFcn
ans = 

    "byte"


ans =

    50


ans =

  function_handle with value:

    @callbackFcn

コールバックをオフにします。

configureCallback(device,"off")

コールバックがオフになっていることを確認します。

device.BytesAvailableFcnMode
ans = 

    "off"

シリアル ポート デバイスへの接続を作成します。

device = serialport("COM3",9600)
device = 

  Serialport with properties:

                 Port: "COM3"
             BaudRate: 9600
    NumBytesAvailable: 0

  Show all properties, functions

ASCII 終端処理された string データを読み取り、それを deviceUserData プロパティに保存するコールバック関数を作成します。

function readSerialData(src,evt)
    data = readline(src);
    src.UserData = data;
end

読み取り可能な終端文字があるときにトリガーするように、コールバックを設定します。

configureCallback(device,"terminator",@readSerialData)

コールバック関数で必要な src 引数と evt 引数に加えて、外部入力引数を取ると仮定します。たとえば、次のように、ASCII 終端処理された string データを読み取り、対応する入力引数に基づいてインクリメントおよび乗算して、それを deviceUserData プロパティに保存するコールバック関数について考えます。

function increaseSerialData(src,evt,addOffset,scaleFactor)
    data = (typecast((readline(src),"uint8") + addOffset) * scaleFactor
    src.UserData = data;
end

シリアル ポート デバイスへの接続を作成します。

device = serialport("COM3",9600)
device = 

  Serialport with properties:

                 Port: "COM3"
             BaudRate: 9600
    NumBytesAvailable: 0

  Show all properties, functions

終端文字が検出されたときにトリガーされ、シリアル デバイスからデータが読み取り可能であることを示すコールバック関数を作成します。これを行うには、srcevent を入力として受け取り、指定された入力引数で increaseSerialData を呼び出す無名関数を作成します。入力引数 callbackFcnHndl をその無名関数へのハンドルに設定します。

addOffset = 2;
scaleFactor = 3;
callbackFcnHdl = @(src, evt) increaseSerialData(src, evt, addOffset, scaleFactor);
configureCallback(device,"terminator",callbackFcnHdl)

入力引数

すべて折りたたむ

シリアル ポート接続。serialport オブジェクトとして指定します。

例: configureCallback(device,"byte",128,@FcnToCall) は、シリアル ポート接続 device から新しいデータの 128 バイトが読み取り可能になるたびに FcnToCall コールバックがトリガーするように設定します。

コールバックをトリガーするために使用可能なデータのバイト数。正の整数値として指定します。この引数を使用して BytesAvailableFcnCount プロパティを設定します。

例: configureCallback(device,"byte",128,@FcnToCall) は、callbackFcnHdl で参照される関数を FcnToCall と等しく設定します。FcnToCall は、128 バイトの新しいデータが読み取り可能になるたびにトリガーされます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

トリガー条件が満たされたときに実行されるコールバック関数へのハンドル。関数ハンドルとして指定します。関数ハンドルは、名前付き関数ハンドルまたは入力引数をもつ無名関数になります。configureCallback は、デバイスの BytesAvailableFcn プロパティを関数ハンドル callbackFcnHdl に設定します。ハンドルが参照する関数は、トリガー条件が発生したときに実行されます。

その関数は、最初の入力引数として srcevt を受け取る必要があります。src はイベントのソース (通常はデバイス オブジェクト) を表し、evt はイベント固有のデータを含みます。

例: configureCallback(device,"terminator",@FcnToCall) は、コールバック関数をハンドル @FcnToCall によって参照される関数に設定します。

データ型: function_handle

バージョン履歴

R2019b で導入