Autor Tema: Procesar comando  (Leído 1753 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Procesar comando
« en: 07 de Septiembre de 2009, 11:54:00 »
Hola Amigos del foro, estoy trabajando en mi proyecto, desde hace rato jeje, y la duda que se me presenta es la siguiente:
Tengo que recibir dator por RS-232, hasta ahi perfecto, los almaceno en un buffer usando el codigo de Red-Pic con alguna modificación pero anda perfecto.
Ahora bien, los caracteres que recibo son instrucciones, por ej: HACER_A, HACER_B, HACER_C, y asi hasta 1000.
El codigo de Red-Pic utiliza un metodo de procesar cada comando mediante comparacion, es decir, compara mediante if o case cada caracter del buffer.
Aqui la pregunta: hay alguna manera (soy muy novato en C) de disparar una funcion X según sea la instruccion extraída del buffer sin usar IF o CASE?
Espero explicarme..... :?
Gracias de antemano!
N
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Procesar comando
« Respuesta #1 en: 07 de Septiembre de 2009, 12:27:56 »
Hola, en la actualidad los compiladores modernos los case extensos son reemplazados por algo que se llama Jump Table de esta manera se optimiza el salto al lugar inidcado sin tener que estar evaluando paso a paso como la haria una estructura if/else.

Saludos !

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Re: Procesar comando
« Respuesta #2 en: 07 de Septiembre de 2009, 13:29:07 »
Gracias richi por responder, estoy mirando pero no veo nada de eso en CCS que es el que uso yo.
Saludos!
N
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Procesar comando
« Respuesta #3 en: 07 de Septiembre de 2009, 13:54:29 »
Hola, no uso CCS, pero deberias mirar el dissambler para ver si implementa lo que te comente a diferencia de if/else anidados.

Saludos !

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Procesar comando
« Respuesta #4 en: 07 de Septiembre de 2009, 14:03:49 »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Procesar comando
« Respuesta #5 en: 07 de Septiembre de 2009, 16:58:27 »
Hola, pero de esta manera no escapas de estar haciendo 1000 comparaciones con el strcmp .

Saludos !

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Re: Procesar comando
« Respuesta #6 en: 08 de Septiembre de 2009, 21:17:52 »
Gracias muchachos, de momento voy a usar el strcmp como dice migsantiago y luego veré si puedo optimizar mas el codigo.
Les agradezco mucho sus respuestas.
saludos!
N
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado bysma

  • PIC10
  • *
  • Mensajes: 2
Re: Procesar comando
« Respuesta #7 en: 10 de Septiembre de 2009, 12:24:56 »
hola. bueno pues yo estoi haciendo lo mismo que tu pero un poco mas avanzado y tambien se me an presentado diferentes problemas

mis comandos serian asi:

-------------------------------------------------------------------------
1º  comando simple:

COLOR

2º comando compuesto:

COLOR CALL      o   COLOR 829324

3º comando avanzado:

COLOR t23112 r23123 f12331 s23131

4º comando rapido (para comunicacion con otros pic).

+1 34 234 23 232

----------------------------------------------------------------------

La primera he conseguido hacerla facilmente pero en la 2º se me presenta un problema es a la ora de procesar los datos

por que quiero guardar el numero en un int en formato decimal y lo he intentado con sprintf y itoa pero nada.

habe si alguien me puede decir como guardar los numeros en decimal

por ejemplo:

int a;
a = buffer[1];             // el a tiene que ser en decimal para luego poderlo pasar por switch no me vale hexagesimal.

switch (a){
case 1:

case 2:
}


ahora mismo no puedo subir mi codigo (vamos lo que tengo hasta ahora) porque no lo tengo a mano pero cuando puedo lo subo.

espero que alguien pueda ayudarme GRACIAS.




Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Procesar comando
« Respuesta #8 en: 10 de Septiembre de 2009, 13:12:19 »
Para pasar de string a decimal debes usar atoi, no sprintf. O entendí mal lo que quieres hacer  :?



Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado bysma

  • PIC10
  • *
  • Mensajes: 2
Re: Procesar comando
« Respuesta #9 en: 10 de Septiembre de 2009, 14:45:19 »
HOLAAAA MUY BUENAS... sukI ACABAS DE AHORRARME UN PAR DE COMEDEROS DE CABEZA MAS..llebaba ya tres dias liao y no via salia.

MIL GRACIAS era exactamente lo que andaba buscando ya lo habia utilizado pero mal, ahora ya va bien.. bueno voi a seguir con mi proyecto ya lo expongo cuando este un poco mas ordenado (codigo fuente).

GRACIAS (ahh y perdÓn por las faltas de ortografia)


 

anything