TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: vasconinicolas en 07 de Septiembre de 2009, 11:54:00

Título: Procesar comando
Publicado por: vasconinicolas 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
Título: Re: Procesar comando
Publicado por: RICHI777 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 !
Título: Re: Procesar comando
Publicado por: vasconinicolas 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
Título: Re: Procesar comando
Publicado por: RICHI777 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 !
Título: Re: Procesar comando
Publicado por: migsantiago en 07 de Septiembre de 2009, 14:03:49
Hola, puedes usar la función strcmp para comparar 2 cadenas:

http://www.todopic.com.ar/foros/index.php?topic=25785.msg210828#msg210828

http://www.cplusplus.com/reference/clibrary/cstring/strcmp/
Título: Re: Procesar comando
Publicado por: RICHI777 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 !
Título: Re: Procesar comando
Publicado por: vasconinicolas 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
Título: Re: Procesar comando
Publicado por: bysma 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.



Título: Re: Procesar comando
Publicado por: Suky 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!
Título: Re: Procesar comando
Publicado por: bysma 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)