Receiving variable length packets through a com port in Simulink using SLDRT package
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Howard Loewen
am 1 Mär. 2023
Kommentiert: Howard Loewen
am 2 Mär. 2023
Hi,
In my application I am simulating in Simulink Desktop Realtime (SLDRT) environment and trying to use "packet output" and "packet input" blocks available in the SLDRT package to send and receive through a com port. But the issue is that the packet lengths are not fixed for both Tx and Rx. I have found a way to get around this limitation for Tx, using multiple "packet output" blocks executed based on a switch case logic.
for Rx (i.e., packet input) can`t use the same method as the other device that I am trying to communicate with does not send the packet length within the packet itself. packet format uses a startring and end sequence with possible byte stuffing. To make matters hard, the device can even send multiple messages within one iteration of the simulation.
Is there any workaroud / solution to this problem ?
Thank you
0 Kommentare
Akzeptierte Antwort
Jan Houska
am 1 Mär. 2023
Hi Howard,
the most important question is how you tell the start and end of the packet. If this is by some byte sequence, probably the only way would be to read the data byte-by-byte (by Packet Input block set to read one byte) and then decode the message yourself by e.g. a While subsystem or Stateflow diagram and use variable-sized signal as output.
If, by chance, the packets are ASCII text-encoded, you may also try the Stream Input block that is able to do some pattern matching provided that the number of output signals stays constant.
Good Luck, Jan
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Target Computer Setup finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!