%先安装MinGW-w64 C/C++、设置环境变量(需要重启),并完成mex -setup测试
%选择C++编译

%导入MPS_Driver驱动DLL
loadlibrary('MPS_Driver_x64.dll','MPS_Driver_x64.h');

%查看模块中的函数,如能看到函数清单,则驱动导入已成功
%libfunctions MPS_Driver_x64 -full;


clc
%数据采集示例

%打开设备
Handle = calllib('MPS_Driver_x64', 'MPS_OpenDevice',0);

%获取设备型号
Device = char(zeros(1,64));
[Flag,Device] = calllib('MPS_Driver_x64', 'MPS_GetDeviceDescriptor',Device,64,Handle)
if Flag == 0
    error('DeviceError!');
end

%根据设备型号确定通道个数
if Device == 'MPS-HD2404'
    Channel = 4
end

if Device == 'MPS-HD2408'
    Channel = 8
end

if Device == 'MPS-HD2416'
    Channel = 16
end


%设置参数
SampleRate = 64000
DIOMode = 0;
Flag = calllib('MPS_Driver_x64', 'MPS_Configure',SampleRate, DIOMode, Handle);


%设置超时
Timeout_ms = 5000;
Flag = calllib('MPS_Driver_x64', 'MPS_TimeOut',Timeout_ms, Handle);

%开始采集
if DIOMode ~= 2
Flag = calllib('MPS_Driver_x64', 'MPS_Start', Handle);
end

i = 10;   %循环采集的次数
while(i)

    i = i - 1;

    %读取数据
    SampleTime_s = 0.5;  %每次读取数据对应的时间
    SampleNumber = idivide(SampleTime_s* double(SampleRate),  int32(128)/Channel, 'ceil') * (128 / Channel);    %调整为128的整倍数
    DataInt = zeros(Channel,SampleNumber,'int32');       %数据缓冲区
    [Flag,DataInt] = calllib('MPS_Driver_x64', 'MPS_DataIn',DataInt, SampleNumber*Channel, Handle);  %读取数据
    DataFloat = double(DataInt) * double(5.16) / double(8388608);    %计算电压


    %绘制曲线,选绘PointNumber个点
    PointNumber = 1000;
    xinterval = idivide(SampleNumber , PointNumber, 'floor');
    xmax = xinterval * PointNumber;
    xaxis = linspace(0,  SampleTime_s,  PointNumber);
    if Channel == 4
        plot(xaxis,DataInt(1,1:xinterval:xmax),xaxis,DataInt(2,1:xinterval:xmax),xaxis,DataInt(3,1:xinterval:xmax),xaxis,DataInt(4,1:xinterval:xmax))
    end

    if Channel == 8
        plot(xaxis,DataInt(1,1:xinterval:xmax),xaxis,DataInt(2,1:xinterval:xmax),xaxis,DataInt(3,1:xinterval:xmax),xaxis,DataInt(4,1:xinterval:xmax),xaxis,DataInt(5,1:xinterval:xmax),xaxis,DataInt(6,1:xinterval:xmax),xaxis,DataInt(7,1:xinterval:xmax),xaxis,DataInt(8,1:xinterval:xmax))
    end

    if Channel == 16
        plot(xaxis,DataInt(1,1:xinterval:xmax),xaxis,DataInt(2,1:xinterval:xmax),xaxis,DataInt(3,1:xinterval:xmax),xaxis,DataInt(4,1:xinterval:xmax),xaxis,DataInt(5,1:xinterval:xmax),xaxis,DataInt(6,1:xinterval:xmax),xaxis,DataInt(7,1:xinterval:xmax),xaxis,DataInt(8,1:xinterval:xmax),xaxis,DataInt(9,1:xinterval:xmax),xaxis,DataInt(10,1:xinterval:xmax),xaxis,DataInt(11,1:xinterval:xmax),xaxis,DataInt(12,1:xinterval:xmax),xaxis,DataInt(13,1:xinterval:xmax),xaxis,DataInt(14,1:xinterval:xmax),xaxis,DataInt(15,1:xinterval:xmax),xaxis,DataInt(16,1:xinterval:xmax))
    end
    drawnow

end


%关闭设备
Flag = calllib('MPS_Driver_x64', 'MPS_CloseDevice', Handle);
警告: 库类 'MPS_Driver_x64' 已存在。请使用类名别名。 

Flag =

     0


Device =

  空的 0×0 char 数组

错误使用 MPS_HDxxxxTest (第 22 行)
DeviceError!