APP Designer 中设计串口通信,接收​数据时回调函数未执行​,如何解决?

조회 수: 55 (최근 30일)
Bei
Bei 2020년 3월 26일
답변: changshu zhan 2022년 2월 19일
最近在使用R2019b中的APP Designer功能设计串行通信软件,目前发送数据是正常的,但是接收数据时提示回调函数存在问题。
串口配置代码如下:
function OpenSerialButtonPushed(app, event)
app.COM = get(app.DropDown,'value') ;
if strcmp(get(app.OpenSerialButton,'Text'),'打开串口')
try
app.s = serialport(app.COM,9600) ;
app.s.Parity = "none" ;
app.s.DataBits = 8 ;
app.s.StopBits = 1 ;
app.s.FlowControl = "none" ;
app.s.ByteOrder = "little-endian" ;
app.s.Timeout = 10 ;
configureCallback(app.s,"byte",1,@ReadSerialData) ;
app.OpenSerialButton.Text = '关闭串口' ;
app.Lamp.Color = [0 1 0] ;
catch err
msgbox("串口打开失败") ;
end
else
try
app.OpenSerialButton.Text = "打开串口" ;
app.Lamp.Color = [0.15 0.15 0.15] ;
catch err
msgbox("串口关闭失败") ;
end
delete(app.s) ; %关闭串口
end
end
上面的代码中关于接收数据的回调函数代码为:
configureCallback(app.s,"byte",1,@ReadSerialData) ;
回调函数ReadSerialData的定义如下:
methods (Access = private)
function ReadSerialData(app,event)
msgbox("回调成功") ;
end
end
执行后,当接收到数据时,Matalab窗口就会提示错误,错误内容如下:
警告: 执行为类 asyncio.InputStream 定义的事件 DataWritten 的侦听程序回调时出现错误:
未定义与 'internal.Serialport' 类型的输入参数相对应的函数 'ReadSerialData'
出错 internal.Serialport/callbackFunction (line 1448)
obj.BytesAvailableFcn(obj, dataAvailableInfo);
出错 internal.Serialport>@(varargin)obj.callbackFunction(varargin{:}) (line 953)
obj.Transport.BytesAvailableFcn = @obj.callbackFunction;
出错 matlabshared.seriallib.internal.Serial/onDataReceived
出错 matlabshared.seriallib.internal.Serial>@(varargin)obj.onDataReceived(varargin{:})
出错 asyncio.Channel/onDataReceived (line 487)
notify(obj.InputStream, 'DataWritten', ...
出错 asyncio.Channel>@(source,data)obj.onDataReceived() (line 425)
@(source, data) obj.onDataReceived());
> In asyncio/Channel/onDataReceived (line 487)
In asyncio.Channel>@(source,data)obj.onDataReceived() (line 425)
这个错误是什么意思呢,应该如何修改代码才是正确的?

답변 (2개)

li xu
li xu 2021년 10월 14일
你试试这样:
configureCallback(app.s,"byte",1,@app.ReadSerialData) ;
function ReadSerialData(app,src,event)
msgbox("回调成功") ;
end

changshu zhan
changshu zhan 2022년 2월 19일
同样的串口采样,为什么不调用读串口回调函数?

카테고리

Help CenterFile Exchange에서 环境和设置에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!