Buenas tardes,
He comprobado que al hacer msginfo( SerialNumber() ), me aparecen caracteres extraños.
¿Será unicode? ¿Habrá que actualizar la función? ¿Alguna solución para saber el nº de serie de la pda en cristiano?
No funciona SerialNumber()
No funciona SerialNumber()
Un Saludo,
Joaquín Martínez
Joaquín Martínez
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: No funciona SerialNumber()
Joaquín,
Este es el código de la funcioón SerialNumber(), voy a comprobar si hemos modificado algo en él:
Este es el código de la funcioón SerialNumber(), voy a comprobar si hemos modificado algo en él:
Code: Select all
#include <uniqueid.h>
HB_FUNC( SERIALNUMBER )
{
DWORD dwOutBytes;
int nBuffSize = 4096;
char strDeviceInfo[ 200 ];
byte arrOutBuff[ 4096 ];
char strNextChar[ 20 ];
char SerialNo[ 18 ];
BOOL bRes = KernelIoControl( IOCTL_HAL_GET_DEVICEID, 0, 0, arrOutBuff, nBuffSize,
&dwOutBytes);
unsigned int i;
strDeviceInfo[ 0 ] = 0; // set zero to initialize string for next strcat()!
if( ! bRes )
{
bRes = KernelIoControl( IOCTL_HAL_GET_DEVICEID, 0, 0, arrOutBuff, nBuffSize,
&dwOutBytes);
}
if( ! bRes )
{
hb_retc( "00000000000000000" );
return;
}
for( i = 0; i < dwOutBytes; i++ )
{
StringCbPrintfA( strNextChar, 20, "%02X", arrOutBuff[ i ] );
fw_strcat( ( char * ) strDeviceInfo, ( char * ) strNextChar );
}
memcpy( ( char * ) SerialNo, strDeviceInfo + 40, 2 );
memcpy( ( char * ) SerialNo + 2, strDeviceInfo + 45, 9 );
memcpy( ( char * ) SerialNo + 11, strDeviceInfo + 70, 6 );
memcpy( ( char * ) SerialNo + 17, "\0", 1 );
hb_retc( ( char * ) SerialNo );
}
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: No funciona SerialNumber()
Joaquín,
En el emulador de Windows CE parece estar funcionando bien:
MsgInfo( SerialNumber() )
En el emulador de Windows CE parece estar funcionando bien:
MsgInfo( SerialNumber() )
Re: No funciona SerialNumber()
Antonio,
En una pda real con win ce 6.0 salen caracteres extraños.
Puedo copiar esta y probarlo, por si en la librería hay algún cambio.
En una pda real con win ce 6.0 salen caracteres extraños.
Puedo copiar esta y probarlo, por si en la librería hay algún cambio.
Re: No funciona SerialNumber()
Antonio,
Esto es lo que sale en la PDA. ¿A qué te suena?
Esto es lo que sale en la PDA. ¿A qué te suena?
Un Saludo,
Joaquín Martínez
Joaquín Martínez
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: No funciona SerialNumber()
Imagino que KernelIoControl() no está funcionando bien ahí
No se me ocurre otra causa...
No se me ocurre otra causa...
Re: No funciona SerialNumber()
Antonio Buenas tardes,
En la la librería de FWPPC tiene que haber algo mal.
Te comento, añado en mi prg la función que me pasaste y me dice que no existen 2 funciones de fwppc.h y fwstr.c.
Añado esas 2 funciones y YA me devuelve el número de serie PERFECTAMENTE.
Creo que hay que arreglar algo dentro de las librerias de FWPPC porque no me cuadra.
Te paso el código que poniendo en mi prg hace funcionar la función perfectamente.
Le he cambiado el nombre a la función para evitar conflicto y que no haya equivocaciones. Llamas a Prueba_SerialNumber y funciona.
En la la librería de FWPPC tiene que haber algo mal.
Te comento, añado en mi prg la función que me pasaste y me dice que no existen 2 funciones de fwppc.h y fwstr.c.
Añado esas 2 funciones y YA me devuelve el número de serie PERFECTAMENTE.
Creo que hay que arreglar algo dentro de las librerias de FWPPC porque no me cuadra.
Te paso el código que poniendo en mi prg hace funcionar la función perfectamente.
Code: Select all
#include <uniqueid.h>
#include <fwppc.h>
char * fw_strcpy( char * s1, const char * s2 )
{
char * s = s1;
while( ( * s++ = * s2++ ) != 0 )
;
return s1;
}
char * fw_strcat( char * s1, const char * s2 )
{
fw_strcpy( &s1[ strlen( s1 ) ], s2 );
return s1;
}
HB_FUNC( PRUEBA_SERIALNUMBER )
{
DWORD dwOutBytes;
int nBuffSize = 4096;
char strDeviceInfo[ 200 ];
byte arrOutBuff[ 4096 ];
char strNextChar[ 20 ];
char SerialNo[ 18 ];
BOOL bRes = KernelIoControl( IOCTL_HAL_GET_DEVICEID, 0, 0, arrOutBuff, nBuffSize,
&dwOutBytes);
unsigned int i;
strDeviceInfo[ 0 ] = 0; // set zero to initialize string for next strcat()!
if( ! bRes )
{
bRes = KernelIoControl( IOCTL_HAL_GET_DEVICEID, 0, 0, arrOutBuff, nBuffSize,
&dwOutBytes);
}
if( ! bRes )
{
hb_retc( "00000000000000000" );
return;
}
for( i = 0; i < dwOutBytes; i++ )
{
StringCbPrintfA( strNextChar, 20, "%02X", arrOutBuff[ i ] );
fw_strcat( ( char * ) strDeviceInfo, ( char * ) strNextChar );
}
memcpy( ( char * ) SerialNo, strDeviceInfo + 40, 2 );
memcpy( ( char * ) SerialNo + 2, strDeviceInfo + 45, 9 );
memcpy( ( char * ) SerialNo + 11, strDeviceInfo + 70, 6 );
memcpy( ( char * ) SerialNo + 17, "\0", 1 );
hb_retc( ( char * ) SerialNo );
}
Un Saludo,
Joaquín Martínez
Joaquín Martínez
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: No funciona SerialNumber()
Joaquín,
Por lo que veo el código de esas funciones es el propio de FWPPC.
Y a varios usuarios de FWPPC y a mo nos funciona bien la función SerialNumber()
A ver si se me ocurre que pueda ser, gracias
Por lo que veo el código de esas funciones es el propio de FWPPC.
Y a varios usuarios de FWPPC y a mo nos funciona bien la función SerialNumber()
A ver si se me ocurre que pueda ser, gracias