How to fix <<Error evaluating registered method 'InitializeConditions' of MATLAB S-Function 'msfun_ard​uino_analo​gread' in 'Mechatron​icsFYP/ARD​UINO/Ardui​no Analog Read7'>>?

20 次查看(过去 30 天)
hello! i am trying to recreate a project usign an arduino mega 2560, an adxl377 and 5 flex sensors to move a 3d arm. i am having issues with the following error :
Error evaluating registered method 'InitializeConditions' of MATLAB S-Function 'msfun_arduino_analogread' in 'MechatronicsFYP/ARDUINO/Arduino Analog Read7'. The following is the MATLAB call stack (file names and line numbers) that produced this error:
['C:\Users\bujie\Desktop\ArduinoIO\simulink\getSetupBlockUserData.m'] [23]
['C:\Users\bujie\Desktop\ArduinoIO\simulink\msfun_arduino_analogread.m'] [71]
Cannot find Arduino IO Setup Block for 'Temporary arduino variable: Arduino1' at top level of model
i have already installed the Arduino IO Package and run MATLAB in administrator mode. i am very new to matlab, i'm running the r2015a version.
the code of msfun_arduino_analogread is :
function msfun_arduino_analogread(block)
% Level-2 M-File S-Functions, Copyright 2014, The MathWorks, Inc.
% instance variables
myArduino = [];
myPin = 0;
setup(block);
%% ---------------------------------------------------------
function setup(block)
% Register the number of ports.
block.NumInputPorts = 0;
block.NumOutputPorts = 1;
block.SetPreCompOutPortInfoToDynamic;
block.OutputPort(1).Dimensions = 1;
block.OutputPort(1).SamplingMode = 'sample';
% Set up the states
block.NumContStates = 0;
block.NumDworks = 0;
% Register the parameters.
block.NumDialogPrms = 3; % arduinoVar, arduinoPin
block.DialogPrmsTunable = {'Nontunable', 'Nontunable', 'Nontunable'};
% Set the sample time
block.SampleTimes = [block.DialogPrm(3).Data 0];
block.SetAccelRunOnTLC(false); % run block in interpreted mode even w/ Acceleration
block.SimStateCompliance = 'DefaultSimState';
% the ArduinoIO Setup block uses the Start method to initialize the arduino
% connection; by using InitConditions, we ensure that we don't access
% the variable before it is created
block.RegBlockMethod('CheckParameters', @CheckPrms); % called during update diagram
% block.RegBlockMethod('Start', @Start); % called first
block.RegBlockMethod('PostPropagationSetup', @PostPropSetup);
block.RegBlockMethod('InitializeConditions', @InitConditions); % called second
block.RegBlockMethod('Outputs', @Output); % called first in sim loop
% block.RegBlockMethod('Update', @Update); % called second in sim loop
block.RegBlockMethod('Terminate', @Terminate);
end
%%
function CheckPrms(block)
try
validateattributes(block.DialogPrm(1).Data, {'char'}, {'nonempty'}); % Name of arduino instance
validateattributes(block.DialogPrm(2).Data, {'numeric'}, {'real', 'scalar', 'nonnegative'}); % pin
errstr=arduino.checknum(block.DialogPrm(2).Data,'analog input pin number',0:15);
if ~isempty(errstr), disp(errstr); error(errstr); end
validateattributes(block.DialogPrm(3).Data, {'numeric'}, {'real', 'scalar', 'nonzero'}); % sample time
catch %#ok<CTCH>
error('Simulink:ArduinoIO:invalidParameter', 'Invalid value for a mask parameter');
end
end
%%
function PostPropSetup(block)
st = block.SampleTimes;
if st(1) == 0
error('The ArduinoIO library blocks can only handle discrete sample times');
end
end
%%
function InitConditions(block)
% fprintf('%s: InitConditions\n', getfullname(block.BlockHandle));
customData = getSetupBlockUserData(bdroot(block.BlockHandle), block.DialogPrm(1).Data);
myArduino = customData('arduinoHandle');
myPin = block.DialogPrm(2).Data;
% myArduino.pinMode(myPin, 'input');
end
%%
function Output(block)
% fprintf('%s: Output\n', getfullname(block.BlockHandle));
analogValue = myArduino.analogRead(myPin);
if isempty(analogValue)
analogValue = 0;
end
block.OutputPort(1).Data = analogValue;
end
%%
function Terminate(block) %#ok<INUSD>
% The ArduinoIO Setup block handles cleanup of myArduino
end
end
help please!!!!

回答(1 个)

JACKO
JACKO 2020-3-22
Run Command
delete(instrfind({'Port'},{'COM5'}))

类别

Help CenterFile Exchange 中查找有关 Arduino Hardware 的更多信息

产品


版本

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by