

clear all;
close all;
clc;


% Matlab primero debe cargar las librerias donde estan programadas las
% funciones

loadlibrary('mpusbapi.dll','_mpusbapi.h');   % Carga de la libreria
 




libisloaded mpusbapi
libfunctions('mpusbapi', '-full')
pause;


vid_pid_norm_c='vid_04d8&pid_0011';
out_pipe_c=('\\MCHP_EP1');
in_pipe_c=('\\MCHP_EP1');

vid_pid_norm = libpointer('voidPtr',[uint32(vid_pid_norm_c) 0]);
out_pipe = libpointer('voidPtr',[uint32(out_pipe_c) 0]);
in_pipe = libpointer('voidPtr',[uint32(in_pipe_c) 0]);


% uint32 myOutPipe; 
% uint32 myInPipe;

calllib('mpusbapi','MPUSBGetDLLVersion')
while(calllib('mpusbapi','MPUSBGetDeviceCount',vid_pid_norm)==0 )
[a,b]=calllib('mpusbapi','MPUSBGetDeviceCount',vid_pid_norm)
end

while(1)

send_buf=[1 1];
    
[myOutPipe,a,b]=calllib('mpusbapi','MPUSBOpen',0,vid_pid_norm,out_pipe, 0, 0)
[myInPipe,a,b]=calllib('mpusbapi','MPUSBOpen',0,vid_pid_norm,in_pipe, 1, 0);


bufer=libpointer('voidPtr');
int8 len;len =3
lent=libpointer('voidPtr',len);

calllib('mpusbapi','MPUSBWrite',myOutPipe, send_buf,len , lent, 0)

pause

send_buf=[1 2];

calllib('mpusbapi','MPUSBWrite',myOutPipe, send_buf, len, lent, 0)
%[uint32, voidPtr, voidPtr, voidPtr] MPUSBWrite(voidPtr, voidPtr, uint32, voidPtr, uint32)

pause


calllib('mpusbapi','MPUSBClose',myOutPipe);
calllib('mpusbapi','MPUSBClose',myInPipe);
end

%--------------------------------------------------------------------------
%%--metodo para VC--
% char vid_pid_norm[] = "vid_04d8&pid_0011";
% char out_pipe []  = "\\MCHP_EP1";
% char in_pipe []   = "\\MCHP_EP1";
% HANDLE myOutPipe;
% HANDLE myInPipe;
% 
% BYTE* send_buf;
% send_buf[0] = 0x01;
% send_buf[1] = 0x01;
% 
% 
% 
% int SendDelay = 0;
% DWORD SentDataLength;
% 
% DWORD selection = 0;
% 
% myOutPipe= MPUSBOpen(selection, vid_pid_norm, out_pipe, 0, 0);
% myInPipe = MPUSBOpen(selection, vid_pid_norm, in_pipe, 1, 0);
% 
% 
% MPUSBWrite(myOutPipe, send_buf, 2, &SentDataLength, SendDelay);
% 
% MPUSBClose(myOutPipe);
% MPUSBClose(myInPipe);
%--------------------------------------------------------------------------

libisloaded mpusbapi
libfunctions('mpusbapi', '-full')
pause;


vid_pid_norm_c='vid_04d8&pid_0011';
out_pipe_c=('\\MCHP_EP1');
in_pipe_c=('\\MCHP_EP1');

vid_pid_norm = libpointer('voidPtr',[uint32(vid_pid_norm_c) 0]);
out_pipe = libpointer('voidPtr',[uint32(out_pipe_c) 0]);
in_pipe = libpointer('voidPtr',[uint32(in_pipe_c) 0]);

char(vid_pid_norm.Value)


uint32 myOutPipe; 
uint32 myInPipe;

calllib('mpusbapi','MPUSBGetDLLVersion')
while(calllib('mpusbapi','MPUSBGetDeviceCount',vid_pid_norm)==0 )
[a,b]=calllib('mpusbapi','MPUSBGetDeviceCount',vid_pid_norm)
end
while(1)
    
[myOutPipe,a,b]=calllib('mpusbapi','MPUSBOpen',0,vid_pid_norm,out_pipe, 0, 0);


[myInPipe,a,b]=calllib('mpusbapi','MPUSBOpen',0,vid_pid_norm,in_pipe, 1, 0);

bufer=libpointer('voidPtr');
int16 len;len =255
lent=libpointer('voidPtr');

[data,a,b,c]=calllib('mpusbapi','MPUSBRead',myInPipe, bufer, len, lent, 1)

calllib('mpusbapi','MPUSBClose',myOutPipe);
calllib('mpusbapi','MPUSBClose',myInPipe);
end


%--------------------------------------------------------------------------
%--------------------------------------------------------------------------
