Autor Tema: Aplicacion con RFID-Funcion con cadena de integer  (Leído 1660 veces)

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

Desconectado neex

  • PIC10
  • *
  • Mensajes: 5
Aplicacion con RFID-Funcion con cadena de integer
« en: 22 de Octubre de 2012, 02:22:22 »
Hola a todos, junto con saludarles y presentarme en este foro, el que sigo hace rato y me ha sacado de muchos apuros  :) , quisiera que me hecharan una manito...

Resulta que nesecito recibir una respuesta a un comando desde un modulo RFID por medio de uart, el problema se me presenta en algunos comandos que tienen una respuesta que no es siempre de la misma cantidad de bytes, aver si me explico, mejor dare un ejemplo...


comando : 0xFF 0x00 0x01 0x83 0x84

posibles respuestas:

0xFF 0x00 0x06 0x83 0x01 0x39 0x0D 0x4C 0xD2 0xEE  // o tambien puede ser

0xFF 0x00 0x02 0x83 0x4E 0xD3

como pueden ver nesecito meter esos bytes en un 'char respuesta(x)', pero me da error al manejar la variable x, y no me quiero dar por vencido, ya que es mi primera aplicacion en c ccs :? :? , antes hacia aplicaciones en picbasic.

En definitiva si pudieran explicarme como hacer el manejo de la variable 'respuesta(x)' para poder manejar cualquier respuesta desde el modulo de distinto tamaño.

Cabe decir que en el comando:
primer byte, es la cabecera,
segundo byte siempre es 0x00,
tercer byte es el la cantidad de bytes (lenght) del comando mas los argumentos,
cuarto byte es el comando en si,
n bytes son los argumentos y
el ultimo byte es el checksum que incluye el comando mas los argumentos.

y en la respuesta:
primer byte, es la cabecera,
segundo byte siempre es 0x00,
tercer byte es el la cantidad de bytes (lenght) del comando mas los datos de la respuesta,
cuarto byte es el comando en si,
n bytes son los datos de la respuesta y
el ultimo byte es el checksum que incluye el comando mas los datos de la respuesta.

Ojala se entienda el post y puedan ayudarme..

Gracias muchachos! :-/ :-/ :mrgreen: :mrgreen:

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Aplicacion con RFID-Funcion con cadena de integer
« Respuesta #1 en: 22 de Octubre de 2012, 10:12:07 »
  No es muy difícil. Si en la propia respuesta te envía la cantidad de bytes que tiene dicha respuesta, es cuestión de leer dicha cantidad...

  Lees los dos primeros bytes,
  Lees el tercero, y en base a su valor implementas un contador

  Lees el cuarto byte, que a priori no interesaría su valor.

  Lees la cantidad de bytes indicadas por el contador
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado neex

  • PIC10
  • *
  • Mensajes: 5
Re: Aplicacion con RFID-Funcion con cadena de integer
« Respuesta #2 en: 22 de Octubre de 2012, 21:12:29 »
Gracias AngelGris por responder, hasta ahi todo claro y me funciona, el problema se da cuando tengo que guardar la respuesta en la variable char respuesta(x)  para dar el return, ya que es una funcion, al compilar me da un error que x debe ser una constante y no variable como lenght . Espero explicarme. Saludos.

Pd: esto es para implementar una libreria para el modulo mifare sm-130, que si resulta o.k. la subire al foro  :P :-/

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Aplicacion con RFID-Funcion con cadena de integer
« Respuesta #3 en: 22 de Octubre de 2012, 21:29:32 »
 Lamento no poder entenderte  :oops:

  Tal vez si subes el código de la función pueda ayudarte de una mejor forma.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado neex

  • PIC10
  • *
  • Mensajes: 5
Re: Aplicacion con RFID-Funcion con cadena de integer
« Respuesta #4 en: 26 de Octubre de 2012, 00:19:05 »
OK, subo una captura del IDE con la funcion descrita, se que pesimamente escrita, pero ya la he probado de muchas maneras.... aparte como dije antes, estoy recién empezando en C.... y estoy al borde del colapso  :? :? :( :oops:

me pide que aux1 sea constante y nesecito que sea variable.....

Help me please!! :-/ :-/

« Última modificación: 26 de Octubre de 2012, 00:21:22 por neex »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Aplicacion con RFID-Funcion con cadena de integer
« Respuesta #5 en: 26 de Octubre de 2012, 00:52:24 »
No se pueden declarar array de tamaño dinámico de esa manera. Lo más sencillo es reservar suficientes elementos en resp[] como para que siempre exista lugar para alojar los posibles datos de todos los comandos disponibles. De esta manera, por ahí declarando resp[16] y luego utilizando el valor recibido de la longitud del mensajes ya sabes cuántos elementos desde el primer elemento de resp[] serán válidos.

P.D. Apúrate porque te estás por quedar sin batería :D
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado neex

  • PIC10
  • *
  • Mensajes: 5
Re: Aplicacion con RFID-Funcion con cadena de integer
« Respuesta #6 en: 27 de Octubre de 2012, 01:40:06 »
Gracias BrunoF. entonces cambiare la estrategia, pensare todo de nuevo.... :)   a ver si salta la liebre.. jajaja Saludos. :-/ :lol:


 

anything