Placa USB HID programar
Placa USB HID programar
Muy buenas foro, me pongo en contacto con ustedes porque acabo de comprar una placa por USB que cambia de color un LED, y no sé como programarla, os digo, lo unico que me han pasado es tenemos que programarla por el HID y me han dado los datos VendorID, ProductID, BufferInSize y BufferOutSize, tambien me han dicho para que cambiar los estados del LED hay que mandar:
Bytes 1 a 3 = 0xF1 = Encender led verde
Bytes 1 a 3 = 0xF2 = Encender led ámbar
Bytes 1 a 3 = 0xA1 = Apagar led verde
Bytes 1 a 3 = 0xA2 = Apagar led ambar
¿alquien sabe como por lo menos conectar con el HID?
Gracias.
Bytes 1 a 3 = 0xF1 = Encender led verde
Bytes 1 a 3 = 0xF2 = Encender led ámbar
Bytes 1 a 3 = 0xA1 = Apagar led verde
Bytes 1 a 3 = 0xA2 = Apagar led ambar
¿alquien sabe como por lo menos conectar con el HID?
Gracias.
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Placa USB HID programar
Si buscas en google por HID VendorID ProductID BufferInSize BufferOutSize aparece información que puede servirte:
Ahora tocaria buscar por hidWriteEx y ConnectToHID
https://books.google.es/books?id=NPSQShtCQaUC&pg=PA439&lpg=PA439&dq=HID+VendorID+ProductID+BufferInSize+BufferOutSize&source=bl&ots=DBcgZR0PYz&sig=jgup29tCyr4U97daMdKsv-0YlxM&hl=es&sa=X&ved=0ahUKEwiywLSk4Z3QAhXH0RQKHYhBCB8Q6AEIHTAA#v=onepage&q=HID%20VendorID%20ProductID%20BufferInSize%20BufferOutSize&f=false

Ahora tocaria buscar por hidWriteEx y ConnectToHID
https://books.google.es/books?id=NPSQShtCQaUC&pg=PA439&lpg=PA439&dq=HID+VendorID+ProductID+BufferInSize+BufferOutSize&source=bl&ots=DBcgZR0PYz&sig=jgup29tCyr4U97daMdKsv-0YlxM&hl=es&sa=X&ved=0ahUKEwiywLSk4Z3QAhXH0RQKHYhBCB8Q6AEIHTAA#v=onepage&q=HID%20VendorID%20ProductID%20BufferInSize%20BufferOutSize&f=false
Re: Placa USB HID programar
Muchas gracias Antonio, ya busque pero lo que encuentro no me dice como conectar, lo que necesito es si alguien del foro ha tenido que tratar este tema, para ver algo de código en nuestro gran lenguaje.
Gracias.
Gracias.
Re: Placa USB HID programar
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"
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"
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Placa USB HID programar
Prueba a cambiarla asi:
Code: Select all | Expand
HB_FUNC( MYWRITEEX )
{
hb_retl( WriteEx( hb_parnl( 1 ), hb_parnl( 2 ), hb_parnl( 3 ) ) );
}
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Placa USB HID programar
En tu código usas un bucle para llamar a MYWRITEEX() sin embargo en el ejemplo que te copié no lo hacen asi, sino que generan una cadena
y se le envía entera llamando una sola vez a MYWRITEEX()
y se le envía entera llamando una sola vez a MYWRITEEX()
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Placa USB HID programar
En realidad esta función debe ser así:
BOOL WINAPI WriteEx(int pVendorID,int pProductID, unsigned char * pData );
BOOL WINAPI WriteEx(int pVendorID,int pProductID, unsigned char * pData );
Code: Select all | Expand
HB_FUNC( MYWRITEEX )
{
hb_retl( WriteEx( hb_parnl( 1 ), hb_parnl( 2 ), hb_parc( 3 ) ) );
}
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact:
Re: Placa USB HID programar
Una única llamada a esta función así:
MYWRITEEX( 9957, 101, Chr( 0 ) + Chr( Asc( "P" ) ) + Chr( Asc( "=" ) ) + Chr( nValorAEnviar ) + Chr( Asc( "T" ) ) )
MYWRITEEX( 9957, 101, Chr( 0 ) + Chr( Asc( "P" ) ) + Chr( Asc( "=" ) ) + Chr( nValorAEnviar ) + Chr( Asc( "T" ) ) )
Re: Placa USB HID programar
Muchas gracias, lo del bucle lo utilizé por que no funcionaba y dije de probar así, voy a probar lo que me dices y te comento.
Muchas Gracias Antonio por tu tiempo
Muchas Gracias Antonio por tu tiempo
Re: Placa USB HID programar
Conseguido, muchas gracias Antonio, ya puedo conectar y enviarle datos al USB.
Gracias
Gracias
- Antonio Linares
- Site Admin
- Posts: 42655
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 67 times
- Been thanked: 96 times
- Contact: