Property assignment is not allowed when the object is empty. Use subscripted assignment to create an array element.
79 次查看(过去 30 天)
显示 更早的评论
This code is meant to read off a data stream from a creep frame and continuously save it until told to stop by attached ui. The problem is I had to move it to a new computer and reinstall everything necessary. Now I am getting a error from line 30 which states startBackground(s);
Property assignment is not allowed when the object is empty. Use subscripted assignment to create an array element.
here is the input code i used. a separate Ui is created where the controlling properties like time interval, radius, initial length, triaxality and displacement increment are told. along with a folder designated, and name of output file. What should happen is that once i press run, the program should start recording the data after file directory is selected. Instead as soon as file directory is selected I get the error.
here is the code
clc;clear;
% c is a struct
c.Date = clock;
c.Rate = 10;
%% Reading/Setting DAQ
s = daq.createSession('dt');
s.addAnalogInputChannel('DT9804(00)','0','Voltage');
s.addAnalogInputChannel('DT9804(00)','1','Voltage');
s.addAnalogInputChannel('DT9804(00)','2','Voltage');
s.addAnalogInputChannel('DT9804(00)','3','Voltage');
s.addAnalogInputChannel('DT9804(00)','4','Voltage');
s.Rate = c.Rate; % Background acuisition rate
%%
% Display graphical user interface
hGui = createDataCaptureUI(s);
% Add a listener for DataAvailable events and specify the callback function
dataListener = addlistener(s, 'DataAvailable', @(src,event) dataCapture(src, event, c, hGui));
% Start continuous background data acquisition
s.IsContinuous = true;
startBackground(s);
% Wait until session s is stopped from the UI
while s.IsRunning
pause(0.5);
end
delete(dataListener);
delete(s);
I looked up solutions to the error online. but they do not seem to apply.
the gui file doesn't seem to be the source of the problem
1 个评论
Rick Zrostlik
2022-9-30
I am getting the same error when trying to use my Data Translation 9847. However, I have ported my code from the 'Session' interface to the 'DataAcquisition' interface. My code:
>> daqlist
>> d = daq('dt')
>> d.Rate = 30000
>> addinput(d,'DT9847-3-1(00)','0','Voltage')
>> data = read(d,30000); %<--- this line causes the error for me
回答(3 个)
per isakson
2022-10-2
编辑:per isakson
2022-10-2
Always include the full error message in the your question.
I don't have the data acquisition toolbox. However, the error messages says that
- there is an empty object
- a property assignment to that object failed
- a subscripted assignment will work
Example:
obj = ClassA.empty, obj(1).t = 17 % subscripted assignment works
obj = ClassA.empty, obj.t = 17 % fails
Now it remains to find out which object is empty and why.
0 个评论
CM
2024-6-18
编辑:CM
2024-6-19
I am getting the same problem with a DT9837a. Except that it only happens on the deployed app. Here is the code:
tempChannels = s.Channels
tempProperties = properties(s)
tempMethods = methods(s)
for iProp = 1:length(tempProperties)
disp(tempProperties{iProp})
disp(s.(tempProperties{iProp}))
end
start(s, 'Continuous') <- error here
Error message is: Property assignment is not allowed when the object is empty. Use subscripted assignment to create an array element.
That is the extent of it. It does not even give the line, though that might be something to do with using diary in a deployed app.
I suspect the error is happening somewhere in the 'start' function, but no details are being provided.
I have compared the output from the working version and the buggy deployed app. It is almost identical, except for this part after vendor:
<a href="matlab:methods('daq.dt.VendorInfo')">Methods</a>, <a href="matlab:events('daq.dt.VendorInfo')">Events</a> .
Additional data acquisition vendors may be available as downloadable support packages.
<a href="matlab:daq.internal.supportPackageInstaller">Open the Support Package Installer</a> to install additional vendors.
Plus a few other minor differences - see the two attachments.
I have tried this on 2 different deployments and they have the same issue. Version info:
I am using matlab 2023b to compile an MCR installer and the mcc command to compile a separate executable.
The mcc command includes
'-a', 'C:\Users\CM\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\Data Acquisition Toolbox Support Package for Data Translation Hardware'
That toolbox is installed in matlab and I have made Fausto's changes from here:
https://au.mathworks.com/matlabcentral/answers/1693530-error-when-trying-to-start-acquisition-from-data-translation-device
I am also installing DataAcqOMNI_V7.8.9 on the target computer.
Update:
I have also tried matlab R2023a and got the same error. I cannot use R2024a because of a different error.
If I run the executable on the computer on which it was compiled, it produces the error.
0 个评论
CM
2024-6-19
编辑:CM
2024-6-19
I have narrowed down the 'cause' of the error to the inclusion of the '-s' parameter in the call to mcc. See example code below. Any chance we can get that fixed? I need to obfuscate. There must be something in the DT drivers that doesn't like it. I tried commenting out s.ScansAvailableFcn and the callback function, but still got the error.
mcc('-m', '-s', 'test_dt.m', '-d', 'C:\test', '-a', 'C:\Users\CM\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\Data Acquisition Toolbox Support Package for Data Translation Hardware');
test_dt.m:
s = daq('dt');
s.Rate = 195.3;
for iChannel = 1:4
addinput(s, 'DT9837-A(00)', num2str(iChannel-1), 'IEPE')
end
s.ScansAvailableFcn = @(src, ~) collect_data(src, 0);
start(s, 'Continuous')
pause(5)
stop(s);
function collect_data(src, ~)
[data, ~, ~] = read(src, src.ScansAvailableFcnCount, 'OutputFormat', 'Matrix');
disp(num2str(sum(data)))
end
2 个评论
Helen Zhu
2024-6-28
Hi CM,
Have you edited matlabroot/toolbox/compiler/advanced_package_supported_files.xml. file? What's in it?
CM
2024-6-28
I have not edited it. Date modified on it is 11/8/2022 0550. Contents are:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<extension>mlapp</extension>
<extension>mlx</extension>
<extension>sfx</extension>
<extension>mat</extension>
</list>
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 COM Component Integration 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!