Necesito enviar/recibir archivos desde/hacia SerialPort y MSP430F5438A , haciendo clic en un botón de exploración en la interfaz de C#, seleccionando un archivo (como texto, bloc de notas, etc.) y, en caso de recibir, guardar el archivo que se envió desde CCS a PC!
Realmente no pude encontrar nada relacionado en Google o en otro lugar. ¿Alguien puede al menos orientarme?
Leería el archivo en algún tipo de búfer en su interfaz de usuario, lo dividiría en paquetes pequeños y lo enviaría.
Por ejemplo, en mi interfaz de usuario, permito que el usuario cargue una nueva imagen de firmware en mi dispositivo. Así que envío ese archivo de firmware a través del UART una línea a la vez. Mi MSP430 lee esa línea en un búfer, que tiene una longitud de X caracteres, la valida, la almacena en una ubicación en una memoria flash externa y luego recibe la siguiente línea. Una vez que ha recibido todos los datos, el MSP430 se ramifica en su código de cargador de arranque.
Solo necesita decidir cómo va a fragmentar los datos y dimensionar sus búferes en consecuencia.
No necesito definir ningún protocolo serial especial porque mis archivos ya están formateados de una manera particular y puedo enviar el archivo una línea a la vez y analizarlo en el otro extremo. http://en.wikipedia.org/wiki/SREC_(formato_de_archivo)
Pero para una aplicación genérica quizás debería definir un protocolo de peso ligero. Como cada línea comenzará con un cierto carácter, un número de secuencia, una longitud de carga útil y tal vez un byte final. Algo a lo largo de estas líneas:
| Byte 0 | Byte 1 | Byte 2 | Byte 3 | Bytes 4 to (p+4) | Byte 5+p |
|----------------------|-----------------|-------------------------------------|----------------|------------------|--------------------|
| Arbitrary Start Byte | Sequence | Total number of packets - up to 255 | Payload Length | The data | Arbitrary End Byte |
| 0x0A | Number x | Of X | p < 256 | | 0xFF |
Luego puede descartar todo el archivo si falta un fragmento. También podría incluir una suma de verificación básica para verificar que la línea no se corrompió cuando estaba en el cable.
El analizador para este tipo de cosas sería relativamente sencillo de escribir en ambos lados.
EDITAR: para propósitos de prueba, recomiendo usar realterm. Es un programa de terminal binario flexible que le permitirá enviar datos arbitrarios, archivos, etc. También puede usarlo para monitorear puertos serie.
Majenko
Renya Karasuma
Majenko
Renya Karasuma
Majenko
Renya Karasuma
Majenko
Chris Stratton