Título: Leer bits de Byte Publicado por: Meta en 2 Abril 2021, 13:14 pm Buenas camaradas:
Haciendo un programa hecho con Windows Form bajo .Net FrameWotk 4.7. Si envío un comando por el puerto serie que se llama X82, recibo un mensaje que en ASCII no se entiende porque usa caracteres raros. Lo paso a hexadecimal y en binario. Envío un comando, ocurre algún evento y en Windoes Form me aparece cógios en HEX y en BIN. Se puede cambiar varios bit en un único Byte. Por ejemplo, si me llega este dato. Hexadecimal: 23C797C0B00D Binario: 00100011 11000111 10010111 11000000 10110000 00001101 Un ejemplo, es poner muchos labels en cada bits y una tabla de cada Byte recibido. Simpre son la misma cantidad de bytes ya que en realdiad hace de Flags. Centrándonos en el binario, ya que hay 6 Bytes. Código
En el Byte c que corresponde al 11000000 quiero leer el bit 3 que corresponde al "Extractor" indicado en la tabla de abajo. Cada Byte tiene su tabla, ahora nos centramos en un Byte y ver los estados de los bits. bit:c Dato Función. 7 = 1 Motor A. 6 = 1 Motor B. 5 = 0 Luz A. 4 = 0 Luz B. 3 = 0 Extractor. 2 = 0 Alarma. 1 = 0 Persiana. 0 = 0 Ventilador El Byte c que ahora contiene estos bits que son 11000000, me llega una nueva trama de Bytes y precisamente este, cambia de 11000000 a 11001000. Solo ha cambiado un bit que es el 3 en el Byte c. Cada bit tiene su label para mostrarlo en el formulario de Windows. La tabla de abajo se actualiza. bit:c Dato Función. 7 = 1 Motor A. 6 = 1 Motor B. 5 = 0 Luz A. 4 = 0 Luz B. 3 = 1 Extractor. 2 = 0 Alarma. 1 = 0 Persiana. 0 = 0 Ventilador Antes el Byte c del bit 3 que es el Extractor estaba a 0, ahora es 1. En resumen. Quiero saber como se leen los bits que me llegan del puerto serie. ¿Existe la posibilidad de hacer un programa así? Saludos. PD: En esta clase de programas que no suelo usar, es como las aves, fáciles de ver, difíciles de alcanzar. Título: Re: Leer bits de Byte Publicado por: BloodSharp en 2 Abril 2021, 15:59 pm En resumen. Quiero saber como se leen los bits que me llegan del puerto serie. No lo puedo probar en C# porque no tengo la PC con Windows, sin embargo lo siguiente fue probado en C++ y debería ser igual en C#: Código
Un código de ejemplo: Código
Una imagen del resultado: (https://i.imgur.com/KYHANWW.png) B# Título: Re: Leer bits de Byte Publicado por: Meta en 2 Abril 2021, 19:46 pm Buen truco en C++.
Me funcionó en modo consola en Windows. (https://social.msdn.microsoft.com/Forums/getfile/1659615) Ver imagen (https://social.msdn.microsoft.com/Forums/getfile/1659615). Código
Voy a hacerlo ahora mismo en C# en modo consola y luego a Windows Form. Gracias por el detalle. ;-) |