by softruz » Thu Nov 17, 2016 10:28 am
Muy buenas grupo, ya he conseguido conectar con HID USB y tambíen conseguir el Handle del Dispositivo USB, pero tengo un gran problema no se como desarrrollar la funcion de escritir, os dejo lo que he desarrollado para ver si alguien sabría como puedo enviar datos a este dispositivo USB
Los datos de configuración de l HID USB Son
VendorID = 9957
ProductID = 101
BufferInSize = 64 bytes
BufferOutSize = 64 bytes
Lo que no comprendo es cuando en C se pasa un parametro como BYTE, como lo tengo que recoger y tratarlo en C.
Las Funciones Connect y GetHandle funcionan, pero la WriteEx NO
Código Fuente
function Test()
local BufferInSize:=64
local BufferOutSize:=64
local BufferIn:=array(BufferInSize)
local BufferOut:=array(BufferOutSize),i:=0
for i:=1 to len(BufferOut)
if i=4
BufferOut[i]:=241
else
BufferOut[i]:=0
end if
next
if MYHIDCONNECT(n)
if MYHIDGETHANDLE(9957,101)<>0
for i:=1 to len(BufferOut)
msginfo(MYWRITEEX(9957,101,BufferOut[i]))
next
else
msginfo("ERROR. No hay conexion con el USB")
end if
else
msginfo("Error. No hay conexion con HID USB Windows.")
end IF
return
¿Que puede hacer?
#pragma BEGINDUMP
#include <hbapi.h>
#include <windows.h>
// Funcion Para Conectar el Dispositivo
BOOL WINAPI Connect( int pHostWin );
HB_FUNC( MYHIDCONNECT )
{
INT pHostWin;
BOOL lReturn;
pHostWin = hb_parni(1);
lReturn = Connect(pHostWin);
hb_retl(lReturn);
}
LONG WINAPI GetHandle( int pVendoID,int pProductID);
HB_FUNC( MYHIDGETHANDLE )
{
INT pVendoID;
INT pProductID;
LONG lReturn;
pVendoID = hb_parni(1);
pProductID = hb_parni(2);
lReturn = GetHandle(pVendoID,pProductID);
hb_retnl(lReturn);
}
BOOL WINAPI WriteEx(int pVendorID,int pProductID,BYTE pData );
HB_FUNC( MYWRITEEX )
{
INT pVendorID;
INT pProductID;
BYTE pData;
BOOL lReturn;
pVendorID = hb_parni(1);
pProductID = hb_parni(2);
pData = hb_parni(3);
lReturn = WriteEx(pVendorID,pProductID,pData);
hb_retl(lReturn);
}
#pragma ENDDUMP
DLL32 function Connect(pHostWin as LONG) AS BOOL PASCAL FROM "Connect" LIB "mcHID.dll"
DLL32 function GetHandle(pVendoID as LONG,pProductID as LONG) As LONG PASCAL FROM "GetHandle" LIB "mcHID.dll"
DLL32 function WriteEx(pVendoID as LONG,pProductID as LONG,pData as BYTE) AS BOOL PASCAL FROM "WriteEx" LIB "mcHID.dll"