Does the Digilent Toolbox Add-On work with Matlab Library Compiler?

Does the Digilent Toolbox work with the Matlab Library compiler? I'm attempting to deploy a matlab .NET application, but when the deployed application runs the command
AO = daq("digilent")
it returns the exception "Specify an operational vendor" which tells me it doesn't have the Digilent Toolbox info included in the compiled application.
I also don't see Digilent Toolbox in the Suggested Support Packages in the Library Compiler application window.

3 Comments

If the question pertains to whether the Digilent toolbox itself can be compiled using the MATLAB Library Compiler, then we unfortunately cannot do it because it is an add-on to MATLAB that provides additional functionality and not a standalone due to which it cannot be compiled on its own.
If you plan to encompass the Digilent Toolbox functions in your MATLAB code, and then compile that code using the MATLAB Compiler, then yes, it is possible. However, you would need to ensure that the Digilent Toolbox is installed on the target machine where the compiled application will run.
Hi Vinayak, thanks for the response. See the code shown below. My problem is that "digilent" is not recognized as a daq option on the target machine specifically when this line of code is run:
AO = daq("digilent"); % DAQ session for the AWG channel
I installed MATLAB runtime on the target machine, and everything else seems to be working as expected. How do I ensure that the Digilent Toolbox is installed on the target machine? I was assuming it would be included when compiled, but this appears not to be the case...?
function [status] = FactoryThermalModuleVibrationCapture_ms00(capture_path,file_name,capture_time,duty)
% Required Hardware:
% Audio DAQ with ASIO driver and IEPE power. Currently using Echo AIO (Echo Test & Measurement)
% Power Source / Function Generator. Currently using Digilent Analog
% Discovery 2.
% capture_path - folder location on local drive
% file_name - wav file name = "asdf.wav"
% capture_time - time of capture in seconds
% duty - % duty cycle [0.0, 1.0]
% Initialize Audio Device:
fs = 48e3;
blocksize = 1024;
deviceReader = audioDeviceReader(...
'Driver','ASIO',...
'Device','ASIO Echo AIO',...
'SampleRate',fs,...
'BitDepth','24-bit integer',...
'ChannelMappingSource','Property',...
'ChannelMapping',[1,2]);
fileWriter = dsp.AudioFileWriter(file_name);
fileWriter.SampleRate = fs; % Capture at same sample rate as stimuli
fileWriter.FileFormat = "WAV";
fileWriter.DataType = "int24";
daqreset;
AO = daq("digilent"); % DAQ session for the AWG channel
VP = daq("digilent"); % DAQ session for the V+ power supply
% Start background +5V
addoutput(VP, "AD2_0", "V+", "Voltage");
VP.Rate = 10; % Rate is 10 Hz
T = 1; % Frame seconds
V = 5; % Amplitude
output01 = V*ones(VP.Rate*T,1);
start(VP,"repeatoutput");
write(VP,output01);
pause(3);
% Start background Analog Out PWM Signal
% Create the PWM signal
N = 40;
% n = 0:N-1;
PWM_fs = 25e3;
rate = N*PWM_fs;
% dt = 1/rate;
% T = N*dt;
% t = n/rate;
N_on = floor(N*duty);
N_off = N - N_on;
PWM_output = [5*ones(N_on,1); zeros(N_off,1)];
% hfig = figure(1);
% hfig.Visible = "on";
% hplot = plot(n,PWM_output);
% hplot.LineWidth = 1.5;
% grid on
% xlabel('Samples (n)')
% ylabel('PWM Out')
PWM_output = repmat(PWM_output,PWM_fs,1);
addoutput(AO, "AD2_0", "ao0" ,'Voltage');
AO.Rate = rate;
preload(AO,PWM_output);
cd(capture_path)
N_frames = ceil(capture_time*fs/blocksize);
N_OverRuns = zeros(N_frames,1);
ii_frame = 1;
start(AO,"repeatoutput");
pause(3);
while ii_frame <= N_frames
[acquiredAudio, N_OverRuns(ii_frame)] = deviceReader();
fileWriter(acquiredAudio);
ii_frame = ii_frame + 1;
end
release(deviceReader);
release(fileWriter);
stop(AO)
stop(VP)
if sum(N_OverRuns)
status = 0;
else
status = 1;
end
end
Have you found a way to work around this? I actually have the same problem where both
daqlist;
daqvendorlist;
did not list anything in my standalone application at the beginning as well. However, I found a way through to be able to register 'digilent' devices to daqvendorlist by including Session.m, VendorInfo.m and DigilentAdaptor.mex64w into my standalone app package (also run DigilentAdaptor in the startup of the app). However, my app is still not able to find the connected device (by checking with daqlist it shows an empty variable). I've already installed all the required digilent toolbox and waveform driver though. Furthermore, my app runs fine when I exported as a Matlab App.
@Vinayak @MathWorks Support Team Could you help us sort this out? I think I am missing some libraries to include into the standalone package (high chance it might be FTDI library or some API with Waveform driver). I found that many people have similar problems, it would be nice if you could fix this and update official document to help other people out as well. I find Matlab App Designer is a wonderful tool to build simple programs interactively, but the lack of compatibility with other toolboxes is a frustrating experience to me.
I'm using R2023B version fyi.
KR,
Vu.

Sign in to comment.

Answers (0)

Categories

Products

Release

R2022b

Asked:

on 21 Apr 2023

Edited:

on 13 Jun 2024

Community Treasure Hunt

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

Start Hunting!