Yes I donāt leave home with out them!
But for those who who want something cheaper, there is software to make a Teensy act like a logic analyzer.
There are also so cheaper clones you can find up on Ebay or the like, that most can use some Shareware software, which is fine. I personally donāt like those who then try to rip of Saleae by directing their customers to download their firmwareā¦
Linux latency: Awhile ago (maybe 8-10 years), I was playing with running the hexapod code under Linux, starting specifically with RPI as to try to start understanding Linux and later to try ROS. The code was setup to plug some other board in to the servo controller into the RPI and ran into the latency issue you mentioned. But the interesting thing was not with all of the boards.
Turns out that it depends on what controller chip that board was using and you mainly run into that with boards that use FTDI chips as they use a different servo driver. Warning memory might be wrong on names:
But if you plug in a board using FtDI: it will create a /dev/ttyUSB0 or USB1ā¦
However if you plug in a board like a Teensy or most newer Arduino which have a built in USB (either directly or with another ATmegaā¦), then they show up as: /dev/ttyACM0 ā¦
Side note: I hated that sometimes my device was /dev/ttyUSB0 and other times /dev/ttyUSB1 so most of the time i use udev rules to create an alias.
Again why I mention all of this, is I was able to shorten the latency on FTDI devices by having the code call tcdrain as soon as I posted the end of the message. This forced FTDI to write the partial packet then.
However I found that calling tcdrain on /dev/ACM0 like devices was very detrimental. It is like the underlying device driver has not implemented some IOCTL and so the code goes, well if I wait long enough then pretty sure it all transferred by nowā¦
So you might see if you are running into something like thisā¦
Not sure if it would help or not, but this code is in my Raspberry pi githubā¦