07-26-2024 08:34 AM
Este es un trabajo que estoy realizando para la universidad, si podrias ayudarme con mi VI
Tengo el siguiente VI, el cual esta conectado por puerto serial, para recibir un string de datos, este se envia en un periodo de 100ms por parte del arduino, este string tiene una cabecera para identificar el inicio con esta estructura 0xAA (1byte), 0x55(1byte), torque(2bytes), pulsos encoder (2bytes), estado (1byte), cksum(1byte), y que estos se envien cada 100ms (string de ejemplo: AA55 0000 0000 07F8), pero una vez que se establece la conexión por el puerto serial, este llega en un desorden (0000 0007 F8AA 5500), como puedo hacer para a ordenar este string en el roden que se desea como se marca en la cabecera AA55 para que este sea el byte 0 y luego hasta el final
07-26-2024 11:07 AM - edited 07-26-2024 11:12 AM
This might just be a framing error. If bytes are streaming in, read a dozen or so bytes, search for the start message byte 0xAA, and decode the next message starting there. To be more specific, your code may have started reading part of the end of the previous message and missed initial part of the message
07-26-2024 06:11 PM - edited 07-26-2024 06:21 PM
You also have serious logical problems, for example unflattening a two byte little endian string to I32 makes very little sense. What is the actual representation for Torque and encoder (U16? I16?)
Most likely you could just unflatten the entire string to a cluster of the various data parts.
You seem to receive binary data, but have a termination character enabled, do there is a nonzero chance that your string gets truncated.
Your AA55 string is in normal display (4 characters). I can guarantee that the two characters read from the string will never be four characters! Change the diagram constant to hex display and reenter the AAFF value
Why is the byte count a control that defaults to zero? Shouldn't that be a diagram constant? Same for the wait.
This all seems very fragile.
07-26-2024 06:28 PM - edited 07-26-2024 06:31 PM
@altenbach wrote:
Most likely you could just unflatten the entire string to a cluster of the various data parts.
Here's how that could look like (all other advice still applies, especially regarding the termination characters, etc.)