Autor Tema: enviar una cadena de tramas hacia el puerto serial  (Leído 1912 veces)

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

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
enviar una cadena de tramas hacia el puerto serial
« en: 18 de Abril de 2019, 17:38:50 »
saludos

tengo  que enviar una cadena de string hacia el puerto serie del microcontrolador, lo que se me ocurre es lo siguiente, enviar los string todos en una misma trama y para diferenciarlos separarlos por ceros

  "hola"0"quetal"0"adios"0

que opinan estaria bien?, ademas me parece que asi podria enviar strings de longitud variable


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:enviar una cadena de tramas hacia el puerto serial
« Respuesta #1 en: 18 de Abril de 2019, 19:48:54 »
Y porque no hacerlo un poco mas "convencional" y usar el "\r\n" , o mejor dicho cualquiera de ambos sea '\r' o '\n', pasen a determinar una nueva string, Esto para evitar problemas con linus el cual usa '\n' solo contra windows que usa "\r\n".

Otra forma de pensarlo es que al detectar un \n es un nuevo string, y omitir el \r .

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re:enviar una cadena de tramas hacia el puerto serial
« Respuesta #2 en: 20 de Abril de 2019, 23:01:45 »
si claro, seria asi

 "hola"0"quetal"0"bien ahi"0\r\n

el cero indicaria el final de un string y el \r\n indicaria el final de la trama


Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:enviar una cadena de tramas hacia el puerto serial
« Respuesta #3 en: 23 de Abril de 2019, 11:10:50 »
Yo entiendo por trama , un bloque de datos de cualquier tipo ordenado de cualquier forma que necesite la aplicación. Por ejemplo, en mi caso tengo aplicaciones que envían tramas uart ordenadas por líneas que agrupan datos según su naturaleza.

 Por ejemplo, imagina que mi trama se compone de 20 valores de temperatura, 30 de fechas, 15 de distancias y 25 de nombres.

  Lo que hago es enviar una línea con los 20 valores de temperatura consecutivos. Acabo la línea con un valor checksum calculado con todos los datos de esa línea y finalmente cambio de línea con \r\n

  Ahora envío las fechas y lo mismo, checksum y \r\n  y así sucesivamente.

 Para el fin de trama podrías enviar un carácter Null que es un \0

  Aunque yo no marco nunca un fin de trama,  simplemente establezco un ratio, por ejemplo 100 ms, lo cual significa que se envía una trama completa cada 100 ms.  Depende del ratio que requiera la aplicación en concreto. Conociendo el ratio no tienes que saber donde está el fin de la trama.

 Saludos.
« Última modificación: 23 de Abril de 2019, 11:16:45 por remi04 »