Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - kondrag_X1

#31
tengo la mala costumbre de hacer las variables estáticas y el gson no las acepta.cambiando esto se ha solucionado dejo constancia por si algún otro le ocurre lo mismo.
Código (java) [Seleccionar]

public class BeanArqueta
{
   private String id;
   private String insert_time;
   private String nombre_arqueta;
   private String direccion_arqueta;
   private String uuid_sensor1;
   private String uuid_sensor2;
   private String uuid_sensor3;

   public BeanArqueta()
   {
       super();
   }

   public static String getId() {
       return id;
   }

   public void setId(String id) {
       BeanArqueta.id = id;
   }

   public String getInsert_time() {
       return insert_time;
   }

   public void setInsert_time(String insert_time) {
       BeanArqueta.insert_time = insert_time;
   }

   public String getNombre_arqueta() {
       return nombre_arqueta;
   }

   public void setNombre_arqueta(String nombre_arqueta) {
       BeanArqueta.nombre_arqueta = nombre_arqueta;
   }

   public String getDireccion_arqueta() {
       return direccion_arqueta;
   }

   public void setDireccion_arqueta(String direccion_arqueta) {
       BeanArqueta.direccion_arqueta = direccion_arqueta;
   }

   public String getUuid_sensor1() {
       return uuid_sensor1;
   }

   public void setUuid_sensor1(String uuid_sensor1) {
       BeanArqueta.uuid_sensor1 = uuid_sensor1;
   }

   public String getUuid_sensor2() {
       return uuid_sensor2;
   }

   public void setUuid_sensor2(String uuid_sensor2) {
       BeanArqueta.uuid_sensor2 = uuid_sensor2;
   }

   public String getUuid_sensor3() {
       return uuid_sensor3;
   }

   public void setUuid_sensor3(String uuid_sensor3) {
       BeanArqueta.uuid_sensor3 = uuid_sensor3;
   }
}
#32
Hola,

Estoy haciendo un servicio web y me encuentro trabajando con la librería Volley, la verdad que simplifica muchísimo la cosa para trabajar con webservices, pero tengo un error que he conseguido acotarlo a las siguientes líneas.

Cuando lanzo la consulta y el Json responde atiendo la respuesta con un método que todo va correcto hasta el punto donde tengo que extraer los datos con gson.fromJson

El método
Código (java) [Seleccionar]

private void procesarRespuesta(JSONObject response) {
       try {
           // Obtener atributo "estado"
           String estado = response.getString("estado");

           switch (estado) {
               case "1": // EXITO
                   Log.d(TAG, "respuesta exitosa.");
                   // Obtener "arqueta" Json
                   JSONObject mensaje = response.getJSONObject("arqueta");
                   // Parsear con Gson
                   Log.d(TAG, "ParsearGson mensaje: "+mensaje.toString());
                   BeanArqueta arquetas = gson.fromJson(mensaje.toString(), BeanArqueta.class);
                   //presentar en activity
                   updateDatosActivity(arquetas);
                   break;
               case "2": // FALLIDO
                   Log.d(TAG, "respuesta fallida.");
                   String mensaje2 = response.getString("mensaje");
                   Toast.makeText(
                           this,
                           mensaje2,
                           Toast.LENGTH_LONG).show();
                   break;
               default:
                   Log.d(TAG, "respuesta error estado:"+estado);
                   break;
           }
       } catch (JSONException e) {
           e.printStackTrace();
       }
   }

el contenido de JSon devuelto es correcto:

{"estado":1,"arqueta":{"id":"1","insert_time":"2015-10-27 08:40:27","nombre_arqueta":"Arqueta","direccion_arqueta":"74:48:52:44","uuid_sensor1":"0001","uuid_sensor2":"0001","uuid_sensor3":"0001"}}


y cuando queremos obtener el contenido del mensaje como se puede ver en el objeto
JSONObject mensaje es: correcto

{"id":"1","insert_time":"2015-10-27 08:40:27","nombre_arqueta":"Arqueta","direccion_arqueta":"74:48:52:44","uuid_sensor1":"0001","uuid_sensor2":"0001","uuid_sensor3":"0001"}


y cuando llega a
Código (java) [Seleccionar]

  BeanArqueta arquetas = gson.fromJson(mensaje.toString(), BeanArqueta.class);


salta una excepción en la documentación dice que es porque el objeto que se intenta pasear no correspondo con el objeto Json.

pero como se puede ver el Json contiene los mismos campos que el objeto BeanArqueta

BeanArqueta
Código (java) [Seleccionar]

public class BeanArqueta
{
   private static String id;
   private static String insert_time;
   private static String nombre_arqueta;
   private static String direccion_arqueta;
   private static String uuid_sensor1;
   private static String uuid_sensor2;
   private static String uuid_sensor3;

   public BeanArqueta()
   {
       super();
   }

   public static String getId() {
       return id;
   }

   public static void setId(String id) {
       BeanArqueta.id = id;
   }

   public static String getInsert_time() {
       return insert_time;
   }

   public static void setInsert_time(String insert_time) {
       BeanArqueta.insert_time = insert_time;
   }

   public static String getNombre_arqueta() {
       return nombre_arqueta;
   }

   public static void setNombre_arqueta(String nombre_arqueta) {
       BeanArqueta.nombre_arqueta = nombre_arqueta;
   }

   public static String getDireccion_arqueta() {
       return direccion_arqueta;
   }

   public static void setDireccion_arqueta(String direccion_arqueta) {
       BeanArqueta.direccion_arqueta = direccion_arqueta;
   }

   public static String getUuid_sensor1() {
       return uuid_sensor1;
   }

   public static void setUuid_sensor1(String uuid_sensor1) {
       BeanArqueta.uuid_sensor1 = uuid_sensor1;
   }

   public static String getUuid_sensor2() {
       return uuid_sensor2;
   }

   public static void setUuid_sensor2(String uuid_sensor2) {
       BeanArqueta.uuid_sensor2 = uuid_sensor2;
   }

   public static String getUuid_sensor3() {
       return uuid_sensor3;
   }

   public static void setUuid_sensor3(String uuid_sensor3) {
       BeanArqueta.uuid_sensor3 = uuid_sensor3;
   }
}


A qué se debe el error? no lo entiendo si el objeto Bean tienes los mismos campos que el mensaje.
#33
PHP / Re: problema con include.
27 Octubre 2015, 23:20 PM
muchísimas gracias gracias llevabas razón ha sido cambiarlo y listo.

pero ahora tengo una duda cual es la diferencia entre require and require_once?

#34
PHP / problema con include.
27 Octubre 2015, 22:55 PM
Hola,

antes que nada queria decir que llevaba años sin tocar php y me he topado con un proyecto que he empezado pero me esta dando un fallo en el include y no sé como solventarlo.

EL sistema de directorios es el siguiente:

public_html-->webService --> Database.php
                                     |
                                     --> mysql_login.php
                                     |
                                     --> arqueta(DIR) --> arqueta.php
                                                              |
                                                               --> Obtener_arquetaById.php

cuando compruebo si funciona con:

http://105.5.10.222/~carmen/webService/arqueta/Obtener_arquetaById.php?idArqueta=1

el error es el siguiente:

Warning: require_once(webService/mysql_login.php) [function.require-once]: failed to open stream: No such file or directory in /home/carmen/public_html/webService/Database.php on line 7

Fatal error: require_once() [function.require]: Failed opening required 'webService/mysql_login.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/carmen/public_html/webService/Database.php on line 7


y los ficheros:

mysql_login.php
Código (php) [Seleccionar]

<?php
/**
 * Provee las constantes para conectarse a la base de datos
 * Mysql.
 */
define("HOSTNAME""localhost");// Nombre del host
define("DATABASE""IoTBLE"); // Nombre de la base de datos
define("USERNAME""carmen"); // Nombre del usuario
define("PASSWORD""45kb-Ahu-eop-3dL"); // Nombre de la constraseña
define("SET NAMES"."UTF-8")//Tipo de codificacion de la BD
?>



Database.php
Código (php) [Seleccionar]

<?php
/**
 * Clase que envuelve una instancia de la clase PDO
 * para el manejo de la base de datos
 */

require_once 'webService/mysql_login.php';


class 
Database
{

    
/**
     * Única instancia de la clase
     */
    
private static $db null;

    
/**
     * Instancia de PDO
     */
    
private static $pdo;

    final private function 
__construct()
    {
        try {
            
// Crear nueva conexión PDO
            
self::getDb();
        } catch (
PDOException $e) {
            
// Manejo de excepciones
        
}


    }

    
/**
     * Retorna en la única instancia de la clase
     * @return Database|null
     */
    
public static function getInstance()
    {
        if (
self::$db === null) {
            
self::$db = new self();
        }
        return 
self::$db;
    }

    
/**
     * Crear una nueva conexión PDO basada
     * en los datos de conexión
     * @return PDO Objeto PDO
     */
    
public function getDb()
    {
        if (
self::$pdo == null) {
            
self::$pdo = new PDO(
                
'mysql:dbname=' DATABASE .
                
';host=' HOSTNAME .
                
';port:63343;',
                
USERNAME,
                
PASSWORD,
                array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
            );

            
// Habilitar excepciones
            
self::$pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
        }

        return 
self::$pdo;
    }

    
/**
     * Evita la clonación del objeto
     */
    
final protected function __clone()
    {
    }

    function 
_destructor()
    {
        
self::$pdo null;
    }
}

?>



arqueta.php
Código (php) [Seleccionar]

require '/home/carmen/public_html/webService/Database.php';

class Arqueta
{
   function __construct()
   {
   }

   /**
    * Retorna en la fila especificada de la tabla 'arqueta'
    *
    * @param $idArqueta Identificador del registro
    * @return array Datos del registro
    */
   public static function GetAll()
   {
       $consulta = "SELECT * FROM arqueta";
       try {
           // Preparar sentencia
           $comando = Database::getInstance()->getDb()->prepare($consulta);
           // Ejecutar sentencia preparada
           $comando->execute();

           return $comando->fetchAll(PDO::FETCH_ASSOC);

       } catch (PDOException $e) {
           return false;
       }
   }

   /**
    * Obtiene los campos de una arqueta con un identificador
    * determinado
    *
    * @param $idArqueta Identificador de la arqueta
    * @return mixed
    */
   public static function GetById($idArqueta)
   {
       // Consulta de la arqueta
       $consulta = "SELECT *
                            FROM arqueta
                            WHERE id = ?";

       try {
           // Preparar sentencia
           $comando = Database::getInstance()->getDb()->prepare($consulta);
           // Ejecutar sentencia preparada
           $comando->execute(array($idArqueta));
           // Capturar primera fila del resultado
           $row = $comando->fetch(PDO::FETCH_ASSOC);
           return $row;

       } catch (PDOException $e) {
           // Aquí puedes clasificar el error dependiendo de la excepción
           // para presentarlo en la respuesta Json
           return -1;
       }
   }

   /**
    * Actualiza un registro de la bases de datos basado
    * en los nuevos valores relacionados con un identificador
    *
    * @param $idArqueta      
    * @param $insert_time    
    * @param $nombre_arqueta
    * @param $direccion_arqueta    
    * @param $uuid_sensor1  
    * @param $uuid_sensor2
    * @param $uuid_sensor3
    */
   public static function Update(
       $idArqueta,
       $insert_time,
       $nombre_arqueta,
       $direccion_arqueta,
       $uuid_sensor1,
       $uuid_sensor2,
       $uuid_sensor3
   )
   {
       // Creando consulta UPDATE
       $consulta = "UPDATE arqueta" .
           " SET insert_time=?, nombre_arqueta=?, direccion_arqueta=?, uuid_sensor1=?, uuid_sensor2=?, uuid_sensor3=? " .
           "WHERE id=?";

       // Preparar la sentencia
       $cmd = Database::getInstance()->getDb()->prepare($consulta);

       // Relacionar y ejecutar la sentencia
       $cmd->execute(array($insert_time, $nombre_arqueta, $fdireccion_arqueta, $uuid_sensor1, $uuid_sensor2, $uuid_sensor3, $idArqueta));

       return $cmd;
   }

   /**
    * Insertar una nueva arqueta
    *
    * @return PDOStatement
    */
   public static function Insertar(
       $insert_time,
       $nombre_arqueta,
       $direccion_arqueta,
       $uuid_sensor1,
       $uuid_sensor2,
       $uuid_sensor3
   )
   {
       // Sentencia INSERT
       $comando = "INSERT INTO arqueta ( " .
           " insert_time," .
           " nombre_arqueta," .
           " direccion_arqueta," .
           " uuid_sensor1," .
           " uuid_sensor2," .
           " uuid_sensor3)" .
           " VALUES( ?,?,?,?,?,? )";

       // Preparar la sentencia
       $sentencia = Database::getInstance()->getDb()->prepare($comando);

       return $sentencia->execute(
           array(
               $insert_time,
               $nombre_arqueta,
               $direccion_arqueta,
               $uuid_sensor1,
               $uuid_sensor2,
               $uuid_sensor3
                   )
       );

   }

   /**
    * Eliminar el registro con el identificador especificado
    *
    * @param $idArqueta identificador de la arqueta
    * @return bool Respuesta de la eliminación
    */
   public static function Delete($idArqueta)
   {
       // Sentencia DELETE
       $comando = "DELETE FROM arqueta WHERE id=?";

       // Preparar la sentencia
       $sentencia = Database::getInstance()->getDb()->prepare($comando);

       return $sentencia->execute(array($idArqueta));
   }
}
?>


Obtener_arquetaById.php
Código (php) [Seleccionar]

<?php
//obtenemos un arqueta por id.
require "Arqueta.php";

if(
$_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['idArqueta']))
{
$idArqueta $_GET['idArqueta'];
$arqueta Informes::getById($idArqueta);

if($arqueta)
{
$datos['estado']  = 1;
$datos['arqueta'] = $arqueta;
print json_encode($datos);
}
else
{
$datos['estado']  = 2;
$datos['mensaje'] = 'Ha ocurrido un error.';
print json_encode($datos);
}
}
else
{
$datos['estado']  = 3;
$datos['mensaje'] = 'Se necesita un identificador.';
print json_encode($datos);
}
}

?>



A que se debe el error?
PD: datos de la base de datos, contraseñas son ficticios.
#35
JAJAJAJA ami me paso lo mismo hace tiempo en al universidad me enseñaron que en java se pasaba por valor y punto.

pero más tarde trabajando de freelance me di cuenta que con los objetos no pasaba y buscando buscando llegué a la misma conclusión.

En java se pasan por valor los tipos básicos como int,byte,short,long etc... pero los objetos si se pasan por referencia.

échale un ojo.
https://cafelojano.wordpress.com/2007/06/27/en-java-el-paso-de-parametros-es-por-valor/
#36
Java / [Android]Procesos en segundo plano.
21 Octubre 2015, 12:53 PM
Hola gente, aquí estamos de nuevo a ver si me pueden sacar del follon que yo solo me he metido.

el trabajo: basicamente se trata de crear un servicio desde la actividad principal y que cuando la app se encuentre en segundo el servicio siga activo. el servicio va a ser un escaner de dispositivos bluetooth. el controlador del dispositivo sigue un patrón singleton, es decir, tengo una instancia del objeto que se va instanciando en todas las actividades.

Problema: A continuación os dejo un trozo de código con el desarrollo. Lo que me ocurre es que cuando pongo a escanear y mato el proceso el scaneo continua y no entiendo muy bien porque.

Para el escaneo y para ahorrar bateria hago un scaneo y luego descanso, inicio escaneo y descanso.

Código (java) [Seleccionar]

public class ServiceDetectionTag extends IntentService {
   private static final String NAMECLASS = "ServiceDetectionTag";
   private static final long STOP_SCAN_TIMER = 10 * 1000;
   private static final long START_SCAN_TIMER = 30 * 1000;

   private static Context mContext;
   private static HandlerBLE mHandlerBLE;
   private static ServiceBroadcastReceiver mServiceBroadcastReceiver;
   private static Thread workerThread = null;
   private static Boolean alive;

   public ServiceDetectionTag()
   {
       super(NAMECLASS);
   }

   /*private volatile Timer mTimerStart;
   private volatile Timer mTimerStop;*/


   @Override
   protected void onHandleIntent(Intent intent)
   {
       alive = true;
       mHandlerBLE = ((BLE_Application) getApplication()).getmHandlerBLEInstance(this.getApplicationContext());
       ((BLE_Application) getApplication()).resetHandlerBLE();
       mContext = getApplicationContext();

       mServiceBroadcastReceiver = new ServiceBroadcastReceiver();
       IntentFilter i = new IntentFilter(ServiceBroadcastReceiver.ACTION_NOTIFY_NEW_DEVICE_FOUND);
       registerReceiver(mServiceBroadcastReceiver, i);

       if(workerThread == null || !workerThread.isAlive())
       {
           workerThread = new Thread(new Runnable()
           {
               public void run()
               {
                   while(isAlive())
                   {
                       try
                       {
                           if (Constant.DEBUG)
                               Log.i(Constant.TAG, NAMECLASS + " ## -- onHandleIntent -> Start scanning");

                           mHandlerBLE.startLeScan();
                           workerThread.sleep(START_SCAN_TIMER);

                           if (Constant.DEBUG)
                               Log.i(Constant.TAG, NAMECLASS + " ## -- onHandleIntent -> Stop scanning");
                           mHandlerBLE.stopLeScan();
                           workerThread.sleep(STOP_SCAN_TIMER);

                       } catch (Exception e) {
                           e.printStackTrace();
                       }
                   }
                   /*
                   if (Constant.DEBUG)
                       Log.i(Constant.TAG, NAMECLASS + " ## -- onHandleIntent -> 1º Start scanning");
                   mHandlerBLE.startLeScan();

                   mTimerStart = new Timer();
                   mTimerStop = new Timer();

                   mTimerStart.scheduleAtFixedRate(new TimerTask() {
                       @Override
                       public void run()
                       {
                           if (Constant.DEBUG)
                               Log.i(Constant.TAG, NAMECLASS + " ## -- onHandleIntent -> Start scanning");
                           mHandlerBLE.startLeScan();
                       }
                   }, 0, START_SCAN_TIMER + STOP_SCAN_TIMER);

                   mTimerStop.scheduleAtFixedRate(new TimerTask() {
                       @Override
                       public void run()
                       {
                           if (Constant.DEBUG)
                               Log.i(Constant.TAG, NAMECLASS + " ## -- onHandleIntent -> Stop scanning");
                           mHandlerBLE.stopLeScan();
                       }
                   }, 0, START_SCAN_TIMER);*/
               }
           });
           workerThread.start();
       }
   }

   @Override
   public void onDestroy()
   {
       super.onDestroy();
       alive = false;

       if (Constant.DEBUG)
           Log.i(Constant.TAG, NAMECLASS + " ## -- onDestroy() -> Stop scanning");
       mHandlerBLE.stopLeScan();

       try
       {
           workerThread.join();
       } catch (InterruptedException e) {
           e.printStackTrace();
       }

       unregisterReceiver(mServiceBroadcastReceiver);
   }

   public static Boolean isAlive()
   {
       if(alive != null)
           return !alive;

       return false;
   }

   public class ServiceBroadcastReceiver extends BroadcastReceiver {
       public static final String ACTION_NOTIFY_NEW_DEVICE_FOUND = "iot_ble.NOTIFY_NEW_DEVICE";

       public ServiceBroadcastReceiver() {
           super();
       }

       @Override
       public void onReceive(Context context, Intent intent) {
           if (Constant.DEBUG)
               Log.i(Constant.TAG, " ## ServiceBroadcastReceiver -- onReceive -> inside");
           String action = intent.getAction();
           if (action.equals(ServiceBroadcastReceiver.ACTION_NOTIFY_NEW_DEVICE_FOUND)) {
               if (Constant.DEBUG)
                   Log.i(Constant.TAG, " ## ServiceBroadcastReceiver -- onReceive -> sending notication(statusBar)");


               MyNotificationHandler myNotificationHandler;
               myNotificationHandler = new MyNotificationHandler(mContext);
               myNotificationHandler.SendNotify();
           }
       }

   }
#37
Electrónica / Re: Como borrar un PIC
8 Octubre 2015, 18:09 PM
lo primero que te aconsejo es que expreses mejor lo que deseas y lo que estas haciendo y lo segundo que te dirijas a un foro más especifico como por ejemplo.

http://www.todopic.com.ar seguro que ahí sabrán decirte más especificamente lo que se tiene que hacer además de tener información especifica del tema con totorales manuales etc.

salu2
#38
Estoy buscando cual es el rango máximo de entrada de una señal analogica para este tipo en concreto?

No consigo información sobre eso y no quiero conectar 3V y cargármelo.

saludos y  gracias.
#39
Java / Re: Error Emulador Android
28 Septiembre 2015, 15:42 PM
es el tema de la memoria del HAXM con la memoria del AVD te esta diciendo que el AVD no puede tener más memoria que el HAXM. cambiala y listo.
#40
Electrónica / libreria LTV704 eagle
21 Septiembre 2015, 17:04 PM
Hola,

Estoy buscando la libreria ltv704 eagle para un diseño d un pcb pero no la encuentro. EL componente lo podeis encontrar en el siguiente enlace.

Si conoces alguna página donde pueda encontrarlo estaría muy agradecido.

http://www.ti.com/product/TLV704/technicaldocuments --> ltv70433

salu2.