TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micronet3 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
-
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 .
-
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
-
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.