Descubrir dispositivos via Bluetooth

Descubrir dispositivos via Bluetooth

Postby softruz » Tue Jun 09, 2009 8:24 am

Muy buenas, necesito mostrar los dispositivos que están al alcance y mostrarlos por ejemplo en un listbox, ¿Alguien me podría decir como puedo hace esto?

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Re: Descubrir dispositivos via Bluetooth

Postby softruz » Mon Aug 03, 2009 9:24 am

Ya lo tengo solucionado estoy investigando para mandar todo tipo de información al movil ya descubierto.

Quien desee información sobre código para descubrir dispositivos Bluetooth dejar Mensaje.

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Re: Descubrir dispositivos via Bluetooth

Postby Daniel Garcia-Gil » Mon Aug 03, 2009 10:00 am

Saludos Softruz...

Sabiendo tus intenciones de ayudar en este punto, seria mejor que publicaras la forma de hacerlo y si es con un ejemplo mucho mejor, puede que recibas muchos mensajes (o talvez no) y tengas que enviar muchos correos (quita tiempo), pero publicandolo aqui:
1- Lo harias una sola vez
2- Queda bien guardado
3- Lo toma el que lo necesite
4- Ahorras tiempo en NO hacer explicaciones individuales
5- Se podria mejorar (si lo necesitase) el codigo

Gracias de antemano por tu colaboracion, es bueno contar con personas con la capacidad de ayudar
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Descubrir dispositivos via Bluetooth

Postby jnavas » Mon Aug 03, 2009 10:28 am

Colegas,
Agradezco si puedes enviarme la solución.
juandatapro@gmail.com

softruz wrote:Muy buenas, necesito mostrar los dispositivos que están al alcance y mostrarlos por ejemplo en un listbox, ¿Alguien me podría decir como puedo hace esto?

Un Saludo.
User avatar
jnavas
 
Posts: 479
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: Descubrir dispositivos via Bluetooth

Postby softruz » Wed Nov 18, 2009 4:30 pm

Perdonar pero no he visto vuestros mensajes, aqui teneis el codigo para mostrar los dispositivos a tu alcance:
function main()
WSAStartup()
nWsaError:=WSALookupServiceBegin(@lphLookup)
if nWsaError<>0 // Tenemos un error localizado en wsaError.h
do case
case nWsaError = WSASERVICE_NOT_FOUND
msgalert("Posibles problemas de conexion:"+CRLF+"No se han encontrado dispositivos Bluetooth USB."+CRLF+"No se han encontrado Dispositivos Bluetooth.",TITLE)
bBt:=.f.
end case
return
end if

if bBt
// Como no hay errores seguimos
nWsaError:=WSALookupServiceNext(@lphLookup,@aBtAux)
if len(aBtAux)<>0
aadd(aBt,{aBtAux[1,1],BtAddress(aBtAux[1,2]),aBtAux[1,3],aBtAux[1,4],aBtAux[1,4]})
end if
while nWsaError<>WSA_E_NO_MORE
nWsaError:=WSALookupServiceNext(@lphLookup,@aBtAux)
if len(aBtAux)<>0
aadd(aBt,{aBtAux[1,1],BtAddress(aBtAux[1,2]),aBtAux[1,3],aBtAux[1,4],aBtAux[1,4]})
end if
end while
for i:=1 to len(aBt)
if msgyesno("¿ Deséa enviar información a "+aBt[i,1]+" ?","CdiBlue")
msginfo(aBt[i,2],aBt[i,1])
end if
next
WSACleanup()
return


// FUNCIONES IMPORTANTES

#pragma BEGINDUMP

#include <WinTen.h>
#include <Windows.h>
#include <ClipApi.h>
#include <WinSock.h>
#include <WinSock2.h>
#include <hbapi.h>
#include <hbapiitm.h>
#include <initguid.h>
#include <svcguid.h>

#define SOCKET SOCKET
#define AF_BTH 32
#define BTHPROTO_RFCOMM 0x0003

DEFINE_GUID(SAMPLE_UUID, 0x31b44148, 0x041f, 0x42f5, 0x8e, 0x73, 0x18, 0x6d, 0x5a, 0x47, 0x9f, 0xc9);
DEFINE_GUID(L2CAP_PROTOCOL_UUID, 0x00000100, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);

#ifdef __HARBOUR__
HARBOUR HB_FUN_WSASTARTUP( PARAMS )
#else
CLIPPER WSASTARTUP( PARAMS )
#endif
{
WSADATA wsa;
_retni( WSAStartup( MAKEWORD(2,0), &wsa ) );
}


#ifdef __HARBOUR__
HARBOUR HB_FUN_WSALOOKUPSERVICEBEGIN( PARAMS )
#else
CLIPPER WSALOOKUPSERVICEBEGIN( PARAMS )
#endif
{
DWORD qs_len = sizeof( WSAQUERYSET );
DWORD flags = LUP_CONTAINERS;
WSAQUERYSET *qs = (WSAQUERYSET*) malloc( qs_len );
HANDLE lphLookup;
INT nError;


lphLookup = (HANDLE) hb_parnl(1);

ZeroMemory( qs, qs_len );
qs->dwSize = sizeof(WSAQUERYSET);
qs->dwNameSpace = NS_BTH;

flags |= LUP_FLUSHCACHE | LUP_RETURN_NAME | LUP_RETURN_ADDR;


// Start the device inquiry
if (WSALookupServiceBegin( qs, flags, &lphLookup ) == SOCKET_ERROR) // Tenemos un Error
{
_retni(WSAGetLastError());
}
else
{
_retni(0);
}
_stornl((LONG) lphLookup,1);
}

typedef ULONGLONG BTH_ADDR;
typedef struct _SOCKADDR_BTH {
USHORT addressFamily;
BTH_ADDR btAddr;
GUID serviceClassId;
ULONG port;
} SOCKADDR_BTH;


#ifdef __HARBOUR__
HARBOUR HB_FUN_WSALOOKUPSERVICENEXT( PARAMS )
#else
CLIPPER WSALOOKUPSERVICENEXT( PARAMS )
#endif
{
DWORD qs_len = sizeof( WSAQUERYSET );
DWORD flags = LUP_CONTAINERS;
WSAQUERYSET *qs = (WSAQUERYSET*) malloc( qs_len );
HANDLE lphLookup;
INT nError;
BTH_ADDR result;
char buf[40] = {0};
DWORD bufsize = sizeof(buf);
PHB_ITEM aTemp = hb_itemNew( NULL );
PHB_ITEM aNew = hb_itemArrayNew( 0);
GUID guid = SVCID_HOSTNAME;

hb_arrayNew( aTemp, 5 );

lphLookup = (HANDLE) hb_parnl(1);

ZeroMemory( qs, qs_len );

qs->lpServiceClassId = &guid;
qs->dwNumberOfCsAddrs = 0;
qs->dwSize = sizeof(WSAQUERYSET);
qs->dwNameSpace = NS_BTH;

flags |= LUP_FLUSHCACHE | LUP_RETURN_NAME | LUP_RETURN_ADDR;
// Start the device inquiry
if(WSALookupServiceNext(lphLookup, flags, &qs_len, qs )== NO_ERROR) // Tenemos un Error
{
//result = ((SOCKADDR_BTH*)qs->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;
WSAAddressToString( qs->lpcsaBuffer->RemoteAddr.lpSockaddr,sizeof(SOCKADDR_BTH), NULL, buf, &bufsize);
//printf("found: %s\n", qs->lpszServiceInstanceName);
//printf("found: %s - %s\n", buf, qs->lpszServiceInstanceName);
hb_arraySetC(aTemp,1,qs->lpszServiceInstanceName);
hb_arraySetC(aTemp,2,buf);
if( qs->lpcsaBuffer )
{
hb_arraySetNL(aTemp,3,qs->lpcsaBuffer->iSocketType);
hb_arraySetNL(aTemp,4,qs->lpcsaBuffer->iProtocol);
//hb_arraySetNL(aTemp,4,result);
hb_arraySetNL(aTemp,5,((SOCKADDR_BTH*)qs->lpcsaBuffer->RemoteAddr.lpSockaddr)->port);
//printf("Socket Type: %d Protocol: %d\n",qs->lpcsaBuffer->iSocketType, qs->lpcsaBuffer->iProtocol);
//printf("Port: %d\n", SDPGetPort(buf));
}
hb_arrayAddForward( aNew, aTemp );
_retni(NO_ERROR);
}
else
{
nError=WSAGetLastError();
if( nError == WSA_E_NO_MORE )
{
//printf("Inquiry complete.\n");
_retni(WSA_E_NO_MORE);
}
while (nError == WSAEFAULT)
{
free( qs );
qs = (WSAQUERYSET*) malloc( qs_len );
if (NO_ERROR==WSALookupServiceNext(lphLookup, flags, &qs_len, qs ))
{
result = ((SOCKADDR_BTH*)qs->lpcsaBuffer->RemoteAddr.lpSockaddr)->btAddr;
WSAAddressToString( qs->lpcsaBuffer->RemoteAddr.lpSockaddr,sizeof(SOCKADDR_BTH), NULL, buf, &bufsize);
//printf("found: %s - %s\n", buf, qs->lpszServiceInstanceName);
hb_arraySetC(aTemp,1,qs->lpszServiceInstanceName);
hb_arraySetC(aTemp,2,buf);

if( qs->lpcsaBuffer )
{
hb_arraySetNL(aTemp,3,qs->lpcsaBuffer->iSocketType);
hb_arraySetNL(aTemp,4,qs->lpcsaBuffer->iProtocol);
//hb_arraySetNL(aTemp,4,result);
hb_arraySetNL(aTemp,5,((SOCKADDR_BTH*)qs->lpcsaBuffer->RemoteAddr.lpSockaddr)->port);
//printf("Socket Type: %d Protocol: %d\n",qs->lpcsaBuffer->iSocketType, qs->lpcsaBuffer->iProtocol);
// printf("Port: %d\n", SDPGetPort(buf));
}
hb_arraySetNL(aTemp,6,result);
hb_arrayAddForward( aNew, aTemp );
nError=NO_ERROR;
//_retc(qs->lpszServiceInstanceName);
_retni(nError);
}
else
{
nError=WSAGetLastError();
}
}
_retni(nError);
}
_stornl((LONG) lphLookup,1);
hb_itemCopy( hb_param( 2, HB_IT_ANY ), aNew );
hb_itemRelease( aTemp );
hb_itemRelease( aNew );
}

#pragma ENDDUMP

Un Saludo.
softruz
 
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Re: Descubrir dispositivos via Bluetooth

Postby joseluisysturiz » Wed Nov 18, 2009 5:50 pm

???
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 66 guests