Autor Tema: Ayuda con comunicacion serial  (Leído 2393 veces)

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

Desconectado FlavioD

  • PIC10
  • *
  • Mensajes: 2
Ayuda con comunicacion serial
« en: 18 de Mayo de 2010, 16:41:47 »
Hola que tal, tengo una pregunta como puedo hacer para leer una trama o cadena de bytes la cual no esta definida en ningun aspecto... a lo que voy es esto; esas son algunas posibles cadenas:

   02 04 10 26
   03 10 25 12 45 69 10
   04 55 A2 58 D1 69

osea no comienzan ni terminan con un byte determinado o la longitud tampoco es la misma en todas las candenas he estado investigando y no doy con algo que me ayude, yo utilizaba el serin2 de esta manera

serin2 rx,84,100,loop,[wait(02),str datos\10]

pero pues ahi esperaba un 02 que era el incio de la cadena y esperaba 10 bytes pero en este caso no empiezan con un byte determinado y la longitud no es la misma. Que es lo que puedo hacer???


Un saludo desde Sonora Mexico.

Desconectado psicowifi

  • PIC12
  • **
  • Mensajes: 56
Re: Ayuda con comunicacion serial
« Respuesta #1 en: 19 de Mayo de 2010, 22:35:43 »
epalex flavioD bueno yo en tu caso usaria algo como asi

esta algo dificil por que debes tener por lo menos un marcador de inicio y uno de final para darle cuerpo al string o por lo menos que tenga una longitud.
se me ocurre que leas solo un byte y lo graves en un array de determinado tamaño ejemplo

array var byte[10]
inicio:

serin2 rx,84,100,loop,[str datos\1]

array(contador)=datos
contador =contador+1
goto ini

asi te deberia guardar cada uno de los byte en una variable... deberiiiaaaaa creo el problema es que el string no tiene estructura para poder cuadrarlo bien se hace dificil pero no imposible jeje
me cuentas saludos

Desconectado FlavioD

  • PIC10
  • *
  • Mensajes: 2
Re: Ayuda con comunicacion serial
« Respuesta #2 en: 20 de Mayo de 2010, 12:42:22 »
Que tal muchas gracias por tu ayuda me has dado una buenisima idea no es igual pero tu respuesta me abrio la mente a un nuevo camino que me funciono, mira asi lo hice tu me dices que ondas:

' primeramente declaro el array
datos var byte [96]

' despues lo lleno con 0
for contador = 0 to 96
    datos[contador] = 0
next

' como yo se que estan llegando datos por el serial hice esto
serin2 rx,baud,10,prueba,[STR datos\96]

' y en prueba hice esto
contador = 0
for j = 0 to 96
      if datos[j] = 0 then
           contador = contador + 1
      else
            totalbytes = j
      endif
      if contador >=3 then
            contador = 0
            j = 97
      endif
next j

' y asi se cuantos bytes llegaron porque las cadenas nunca van a traer tres 0(ceros) continuos despues de eso evaluo los datos para saber que tengo que hacer  :?
' es lo unico que se me ocurrio para resolver.


que te parece; funciona porque asi lo tengo pero si hay otra alternativa estoy abierto a toda sugerencia. Pero creeme que salio de tu respuesta muchas gracias.

Saludos desde Sonora Mexico.


Desconectado psicowifi

  • PIC12
  • **
  • Mensajes: 56
Re: Ayuda con comunicacion serial
« Respuesta #3 en: 21 de Mayo de 2010, 20:31:32 »
que bueno flavio que resolvistes el problema y conseguistes solucion... esa tambien es buena la que te inventastes me alegra que lo que te asome te ayudara a lograr una solucion... yo tambien ando en una de recoleccion de datos usando serin2 etc claro mi trama si tiene cuerpo definido... se me han presentado unos problemas pero e resuelto en el andar del proyecto...
estamos en contacto pues cuelquier cosa a la orden menos mal no te quedastes en blanco saludos


 

anything