elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con comparacion en sentencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con comparacion en sentencia  (Leído 2,693 veces)
rod00x3

Desconectado Desconectado

Mensajes: 21


Ver Perfil
ayuda con comparacion en sentencia
« en: 5 Enero 2013, 00:03 am »

hola como estan mi duda es sobre una funcion que usa un argumento como puntero
en general para cada parametro de posible entrada uso (adl_ioDefs_t *)Param)[ 0 ])
(adl_ioDefs_t *)Param)[ 1 ])
(adl_ioDefs_t *)Param)[ n ])

Lo que quiero es saber si me pueden ayudar para en lugar de comparar caracter por caracter de la cadena pueda comparar toda una cadena, ejemplo:

if(((((adl_ioDefs_t *)Param)) & ADL_IO_LEV_HIGH)=="0011001")

el codigo actual que tengo es el siguiente:

if(((((adl_ioDefs_t *)Param)[ 7 ]) & ADL_IO_LEV_HIGH)==0)

{

adl_atSendResponse(ADL_AT_RSP,"\n detonado");

adl_smsSend(smshandle,"","accion",ADL_SMS_MODE_TEXT);

}


« Última modificación: 7 Enero 2013, 19:35 pm por rod00x3 » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: ayuda con comparacion en sentencia
« Respuesta #1 en: 5 Enero 2013, 01:08 am »

.
strcmp()

Dulces Lunas!¡.


En línea

The Dark Shadow is my passion.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ayuda con comparacion en sentencia
« Respuesta #2 en: 5 Enero 2013, 03:48 am »

Lo que quiero es saber si me pueden ayudar para en lugar de comparar caracter por caracter de la cadena pueda comparar toda una cadena [...]

el codigo actual que tengo es el siguiente:

if(((((adl_ioDefs_t *)Param)[ 7 ]) & ADL_IO_LEV_HIGH)==0){
   adl_atSendResponse(ADL_AT_RSP,"\n detonado");
   adl_smsSend(smshandle,"5543299041","ATM sucursal COSMOBIT a detonado",ADL_SMS_MODE_TEXT);
}
La condición es:
1) Convertir la variable "Param" al tipo "adl_ioDefs_t *"
2) Comparar ambos valores con el operador a nivel de bits AND.
Y es verdadera si ningún par de bits esta a uno.

Honestamente no creo que busques una comparación de cadenas. Aquí lo mejor es explicar en detalle la operación que deseas realizar en base al tipo "adl_ioDefs_t *" y la macro ADL_IO_LEV_HIGH. También indica el compilador, plataforma y bibliotecas que estas utilizando para el programa.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
rod00x3

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: ayuda con comparacion en sentencia
« Respuesta #3 en: 7 Enero 2013, 19:33 pm »

Ok, es solo que pense que mi solucion seria a algo estandar de c,
este es el codigo que tengo, es de un modulo de sierra wireless, lo que quiero es poder manipular los if de una manera mas simple, como enunciaba, cada param[n] es una entrada.

#include "adl_global.h"
#include "generated.h"
#include "adl_CmdHandler.h"
#include "adl_sms.h"
#include "adl_gpio.h"

bool SmsNuevo(ascii *telno,ascii *smstimelnth,ascii *smstex);
void SmsEnviado(u8 Event, u16 Nb);
void MyGpioEventHandler ( s32 GpioHandle, adl_ioEvent_e Event, u32 Size, void *Param );

u8 smshandle;         //Guarda la informacion de los SMS.
ascii buffer[200];

s32 myGpioOut_Handle;

#define NUM_GPIO_OUT 1

u32 My_Gpio_Label1 [ NUM_GPIO_OUT ] = {25};

adl_ioDefs_t Gpio_Out_Config [NUM_GPIO_OUT] = {ADL_IO_GPIO | 25 | ADL_IO_DIR_IN};

// Gpio Event Handle
s32 MyGpioEventHandle;

/****************************************************************************************/
//Programa Principal
void main_task ( void )
{
   adl_ioDefs_t Gpio_to_read1 = ADL_IO_GPIO | My_Gpio_Label1 [ 0 ] ;
   s32 ReadValue;

    adl_atSendResponse(ADL_AT_RSP,"      \"PUSH REMOTO\"        \r\n");
    adl_atSendResponse(ADL_AT_RSP,"  AG ELECTRONICA S.A DE C.V  \r\n");

    smshandle=adl_smsSubscribe((adl_smsHdlr_f)SmsNuevo,(adl_smsCtrlHdlr_f)SmsEnviado,ADL_SMS_MODE_TEXT);

    MyGpioEventHandle = adl_ioEventSubscribe ( MyGpioEventHandler );

    myGpioOut_Handle = adl_ioSubscribe ( NUM_GPIO_OUT, Gpio_Out_Config, ADL_TMR_TYPE_100MS, 1, MyGpioEventHandle );

    // Read inputs
    ReadValue = adl_ioReadSingle (myGpioOut_Handle, &Gpio_to_read1 );
}
/****************************************************************************************/

/****************************************************************************************/
bool SmsNuevo(ascii *telno,ascii *smstimelnth,ascii *smstex){
   //Rutina llamda por el sistema operativo cuando llega un SMS.
    //Los parametros son -> numero telefonico,longuitud del mensaje, texto del sms.
       ascii buffer[200];  //se delcara un buffer para organizar los datos.

       wm_strcpy(buffer,"\n\r Nuevo mensaje ha llegado\r\n Numero telefonico: ");    //se imprime en el buffer la cadena nuevo mensaje, numero telefonico:
       wm_strcat(buffer,telno);                                                      //se adjunta el numero telefonico
       wm_strcat(buffer,"\r\n Mensaje: ");                                           //se adjunta el texto "mensaje"
       wm_strcat(buffer,smstex);                                                     //se adjunta el mensaeje de texto que llego.
       adl_atSendResponse(ADL_AT_RSP,buffer);                                        //se imprime todo por el puerto serial.
      adl_atSendResponse(ADL_AT_RSP,"\n");

      return(1);
}
/****************************************************************************************/


/****************************************************************************************/
void SmsEnviado(u8 Event, u16 Nb){
    switch(Event){

        case ADL_SMS_EVENT_SENDING_OK:
            adl_atSendResponse(ADL_AT_RSP,"\n\r Mensaje Enviado Correctamente\r\n");
        break;

        case ADL_SMS_EVENT_SENDING_ERROR:
            adl_atSendResponse(ADL_AT_RSP,"\n\r Error Al Enviar Mensaje\r\n");
        break;
    }
}
/****************************************************************************************/

// GPIO event handler
void MyGpioEventHandler ( s32 GpioHandle, adl_ioEvent_e Event, u32 Size, void *Param )
{
// Check event
   switch ( Event )
      {
         case ADL_IO_EVENT_INPUT_CHANGED :
            {
               if(((((adl_ioDefs_t *)Param)[ 0 ]) & ADL_IO_LEV_HIGH)==0)
                  {
                     adl_smsSend(smshandle,"","PUSH ACTIVADO",ADL_SMS_MODE_TEXT);
                        //Se envia un mensaje de texto con los parametros "Numero Telefónico" y "Mensaje".
                  }
            }
         break;
      }
}

este es el codigo original, yo lo quiero modificar para 8 entradas, no entiendo del todo lo que pasa pero esto me funciono a medias:
1) incremente el numero del arreglo y la definicion de la entrada, y logre tener en el evento 8 entradas, pero cuando hay 2 simultaneas me envia ambos registros, y quiero que solo me envie la que mas reciente.

Segun yo con entender esa parte que postee de comparar lo que hay en param, ya esta. pero no tengo mucha idea.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sentencia Goto en Php , Salto de sentencia en Php
PHP
Graphixx 3 4,025 Último mensaje 24 Mayo 2012, 17:46 pm
por Graphixx
Ayuda Comparacion de cadenas
Java
charmedever 3 2,215 Último mensaje 16 Julio 2012, 05:19 am
por hucruz
Ayuda con la sentencia WHERE en VB.net
Programación General
airtraffic 2 2,144 Último mensaje 19 Febrero 2013, 21:52 pm
por airtraffic
Ayuda con la comparacion de estructuras en C
Programación C/C++
GameX 3 2,658 Último mensaje 17 Diciembre 2016, 15:58 pm
por engel lex
AYUDA URGENTE!! Comparacion de fechas en DEV C++
Programación C/C++
JonatanP 2 2,549 Último mensaje 26 Mayo 2020, 20:12 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines