Используйте демонстрационный адаптер в качестве шаблона для создания пользовательского адаптера, который можно создать, протестируйте, и доступ от тулбокса. Следующие разделы обеспечивают последовательность шагов для модификации адаптера. Примеры в этой теме создают пользовательский адаптер под названием MyAdaptor
с ID поставщика my
.
В этом разделе описываются шаг, чтобы сделать новый пользовательский адаптер на основе поставленного демонстрационного адаптера. Этот пример изменяет только имена адаптера, поставщика и устройств, без любых функциональных изменений. Вы создаете пользовательский адаптер в локальной папке, затем добавляете папки сборки в путь MATLAB. Этот раздел использует два места папки повсюду:
Местоположение | Описание |
---|---|
matlabroot | Местоположение установки MATLAB. Это - MATLAB, используемый и для создания адаптера, и для доступа к адаптеру через сеанс сбора данных. |
C:\adaptors\daqsdk | Локальное расположение файла, где новый адаптер изменяется и создается. |
Создайте область сборки в месте по вашему выбору. Этот пример работает с новой папкой, C:\adaptors\daqsdk
. Создайте подпапку здесь под названием src
, и в который подпапка под названием daqadaptor
.
Скопируйте папку DemoAdaptor
с
в matlabroot\toolbox\daq\daqsdk\src\daqadaptor
C:\adaptors\daqsdk\src\daqadaptor
.
В C:\adaptors\daqsdk\src\daqadaptor
переименуйте папку DemoAdapter
, чтобы быть MyAdaptor
.
Перейдите в MyAdaptor
и переименуйте три из его файлов согласно следующей таблице:
Настоящее имя | Новое имя |
---|---|
custom_demo.cpp | custom_my.cpp |
demoadaptor.cpp | myadaptor.cpp |
demoadaptor.hpp | myadaptor.hpp |
С текстовым редактором измените каждый из трех новых файлов в предыдущей таблице, заменив все случаи текста DemoAdaptor
, demoadaptor
, DemoDriver
и custom_demo.cpp
с MyAdaptor
, myadaptor
, MyDriver
и custom_my.cpp
, соответственно, сохранив стиль капитализации буквы с каждой заменой.
Далее отредактируйте содержимое myadaptor.cpp
как показано в следующей таблице:
Исходный текст | Обновленный текст |
---|---|
{ shortName = "MW"; fullName = "MathWorks"; driverName = "DemoAdaptor"; return DAQSuccess; } |
{ shortName = "MY"; fullName = "MyAdaptor"; driverName = "MyDriver"; return DAQSuccess; } |
prefix = "MWDev"; |
prefix = "MyDev"; |
DAQStatus MyDriver::inputSingleScanImpl(ChannelGroupIndex groupIndex, DataScan &data) const { deviceManager_->inputSingleScan(groupIndex, data); return DAQSuccess; } |
DAQStatus MyDriver::inputSingleScanImpl(ChannelGroupIndex groupIndex, DataScan &data) const { // deviceManager_->inputSingleScan(groupIndex, data); data.push_back(1.125); data.push_back(2.250); return DAQSuccess; } |
Последняя строка этой таблицы заставляет функцию inputSingleScanImpl
возвращать точные данные, вместо того, чтобы вызывать функцию драйвера, чтобы считать данные.
С этими сохраненными модификациями и на месте, вы готовы создать адаптер.
В MATLAB, выполнение следующая утилита, чтобы создать исполняемый файл MEX для MyAdaptor
:
daq.sdk.utility.mex.buildAdaptor('MyAdaptor','custom_my', ... 'C:\adaptors\daqsdk\src\daqadaptor\MyAdaptor','C:\adaptors\daqsdk\bin\win64')
Входные аргументы функции задают имя адаптера, файл исходного кода, местоположение исходного файла, и куда поместить созданный вывод.
Функция buildAdaptor
требует, чтобы ваша система была сконфигурирована с Microsoft® Visual Studio® 2013 или позже.
Создайте папку C:\adaptors\daqsdk\+daq
и копию в нее папка +demoadaptor
, найденная в
.matlabroot\toolbox\daq\daqsdk\+daq\+demoadaptor
Перейдите в C:\adaptors\daqsdk\+daq
и переименуйте +demoadaptor
к +myadaptor
.
Перейдите в C:\adaptors\daqsdk\+daq\+myadaptor
и отредактируйте эти два файла MATLAB в той папке:
Session.m VendorInfo.m
В обоих из этих файлов замените все случаи текстов DemoAdaptor
и demoadaptor
с MyAdaptor
и myadaptor
, соответственно, сохранив стиль капитализации буквы с каждой заменой.
В файле VendorInfo
используйте символы %
, чтобы прокомментировать строки, которые скрывают адаптер, между начинанием и концом удаляют индикаторы. Изменение выглядит так:
% BEGIN REMOVE % if daq.internal.getOptions().HideDAQSDKAdaptor % throw(MException(message('daqsdk:HardwareInfo:VendorIsHidden', mfilename('class')))); % end % END REMOVE
Сохраните и закройте файлы.
Ваш измененный адаптер теперь готов к употреблению.
Этот пример показывает, как получить доступ к поставщику и устройству, представленному вашим измененным адаптером. Сеанс сбора данных с вашим адаптером позволяет вам добавлять каналы и получать информацию от устройства.
Запустите MATLAB и используйте следующие команды, чтобы сделать ваш адаптер доступным.
addpath 'C:\adaptors\daqsdk\bin\win64' addpath 'C:\adaptors\daqsdk'
Затем можно получить доступ адаптеру.
v = daq.getVendors
v = Number of vendors: 2 index ID Operational Comment ----- ----------- ----------- ------------------------ 1 ni false Click here for more info 2 my true MyAdaptor
Используйте индекс ID поставщика my
, чтобы получить больше информации.
vendor = v(2)
vendor = Data acquisition vendor 'MyAdaptor': ID: 'my' FullName: 'MyAdaptor' AdaptorVersion: '3.13 (R2018a)' DriverVersion: '1.0.0' IsOperational: true
Создайте сеанс для своего устройства.
s = daq.createSession('my')
s = Data acquisition session using MyAdaptor hardware: Will run for 1 second (1000 scans) at 1000 scans/second. No channels have been added.
Добавьте канал аналогового входа в сеанс, сопоставленный с устройством MyDev0
, канал ai0
.
ch1 = addAnalogInputChannel(s,'MyDev0','ai0','Voltage')
ch1 = Data acquisition analog output voltage channel 'ao0' on device 'MyDev0': TerminalConfig: SingleEnded Range: -10 to +10 Volts Name: '' ID: 'ao0' Device: [1x1 daq.sdk.DeviceInfo] MeasurementType: 'Voltage'
Добавьте второй канал аналогового входа.
ch2 = addAnalogInputChannel(s,'MyDev0','ai1','Voltage');
Просмотрите сеанс, чтобы видеть настройки канала.
s
s = Data acquisition session using MyAdaptor hardware: Will run for 1 second (1000 scans) at 1000 scans/second. Number of channels: 2 index Type Device Channel MeasurementType Range Name ----- ---- ------ ------- --------------- ---------------- ---- 1 ai MyDev0 ai0 Voltage (Diff) -10 to +10 Volts 2 ai MyDev0 ai1 Voltage (Diff) -10 to +10 Volts
Examine the objects so far in the base workspace.
whos
Name Size Bytes Class Attributes ch1 1x1 8 daq.sdk.AnalogInputVoltageChannel ch2 1x1 8 daq.sdk.AnalogInputVoltageChannel s 1x1 8 daq.myadaptor.Session v 1x2 16 daq.VendorInfo vendor 1x1 8 daq.myadaptor.VendorInfo
С данными в качестве примера, трудно закодированными в адаптер функция inputSingleScanImpl
, можно выполнить одно измерение сканирования на каналах сеанса.
data = inputSingleScan(s)
data = 1.1250 2.2500
Можно также считать входные данные потоковой передачи, в этом случае обеспеченные демонстрационным объектом DAQstream
адаптера. Настройка значения по умолчанию сеанса получает 1 000 сканирований за 1 секунду.
stdata = startForeground(s);
whos stdata
Name Size Bytes Class Attributes stdata 1000x2 16000 double
stdata
содержит столбец 1 000 выборок для каждого канала. Просмотрите первые шесть строк.
stdata(1:6,:)
0 0.2500 0.2487 0.4987 0.4818 0.7318 0.6845 0.9345 0.8443 1.0943 0.9511 1.2011
По окончании удаляете сеанс и очищаете объекты.
delete(s) clear v vendor s ch1 ch2