主要内容

configureCallback

为与串行端口设备的通信设置回调函数和触发条件

说明

configureCallback(device,"terminator",callbackFcnHdl) 将由句柄 callbackFcnHdl 引用的回调函数设置为每当可从指定的串行端口读取终止符时触发。该语法将 deviceBytesAvailableFcnMode 属性设置为 "terminator",将 BytesAvailableFcn 属性设置为 callbackFcnHdl

使用 configureTerminator 设置终止符字符。

示例

configureCallback(device,"byte",count,callbackFcnHdl) 将句柄 callbackFcnHdl 所引用的函数设置为每当有新的 count 个字节可供读取时触发。该语法将 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,您希望在有终止符可供读取时运行该函数。将输入参量 callbackFcnHndl 设置为 FcnToCall 的句柄。将回调函数设置为当终止符可供读取时触发。

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 结尾的字符串数据,并将其保存到 deviceUserData 属性中。

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

将回调设置为当终止符可供读取时触发。

configureCallback(device,"terminator",@readSerialData)

假设您的回调函数除了使用必需的 srcevt 参量,还接受外部输入参量。例如,假设有以下函数,该函数读取以 ASCII 字符结尾的字符串数据,将其递增并乘以对应的输入参量,然后将其保存到 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)FcnToCall 回调设置为每当有 128 个字节的新数据可从串行端口连接 device 读取时触发。

触发回调的可用数据字节数,指定为正整数值。使用此参量设置 BytesAvailableFcnCount 属性。

示例: configureCallback(device,"byte",128,@FcnToCall)callbackFcnHdl 所引用的函数设置为等于 FcnToCall。每当有 128 字节的新数据可供读取时,FcnToCall 就会触发。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

满足触发条件时运行的回调函数的句柄,指定为函数句柄。函数句柄可以是命名函数句柄或具有输入参量的匿名函数。configureCallback 将设备的 BytesAvailableFcn 属性设置为函数句柄 callbackFcnHdl。句柄所引用的函数在触发条件发生时运行。

该函数必须接受 srcevt 作为其前两个输入参量。src 表示事件的源,通常是设备对象,evt 包含特定于事件的数据。

示例: configureCallback(device,"terminator",@FcnToCall) 将回调函数设置为句柄 @FcnToCall 所引用的函数。

数据类型: function_handle

版本历史记录

在 R2019b 中推出

另请参阅

函数