Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola!!
Estoy escribiendo el código para que un Atmega8 me envía un paquete de datos por puerto serie, utilizando el USART. Se compone de:
byte de inicio => 0xFE
byte de ID => 0x01
byte de comando => 0x1
byte de datos => 0x00
byte de fin => 0xFF
No está muy depurada la estructura del datagrama, se aceptan sugerencias pero en principio va así, para ir probando si funciona. La idea es que algunos bytes se conviertan en bits.
El caso es que todos los bytes me llegan correctamente al ordenador de destino menos los 0x00 del byte de datos y no sé si será por culpa del Atmega8 o por el software del PC, pero el caso es los bytes de 0 me los ignora y ya he probado a leer la entrada del PC de todas las maneras que me permite el lenguaje (C#).
Para enviar el dato desde el USART, una vez configurado pongo
out UDR, aux ; aux vale 0x00
¿Alguien sabe por qué puede ser?
Muchas gracias!!!!
Tenia toda la pinta... al final puede ser un despiste como poner
If (buffer > 0)
en vez de
If (len(buffer) > 0)
😀
Por eso hace años que dejé de utilizar el hyperterminal para analizar datos del puerto serie. 😛
Ahora me tengo que buscar uno para linux...
Alguna idea?
S2
Ranganok Schahzaman
Quizás debido a que siempre he usado el ModBus, al final siempre he acabado haciendome el programa en C#.
Hola de nuevo!!!!
Simplemente os escribo para notificaros de que el problema esta resuelto y, como en el 90% de las veces en temas de programación, el fallo era una chorrada, un despiste del programador (yo).
El programa está hecho en C# y el "fallo" radicaba en que en la inicialización del puerto, por aquella costumbre, a veces un tanto perjudicial, de reutilizar el código (en este caso del proyecto de fin de carrera), se me pasó revisar que tenía activo el atributo "DiscardNull", con lo que todos los caracteres "nulos" se los comía.
Que cosas!! Tres horas dando vueltas al código para luego encontrarme con esto.
Gracias a todos y saludos!!!!!