Le 2012-03-11 à 15:35:00, Hans-Christoph Steiner a écrit :
There is already buffering happening,
But there wasn't enough of it, obviously, because I modified an existing external that I'm not maintainer for, just to have a large enough buffer. I don't remember what was the original size, but it sucked.
my guess is at the OS level, since the bytes are read in bursts, no matter how fast the polling it for read or write.
At 38400 bps with 10 bits/byte, it's 3840 bytes per second. If they are received at full speed, they are equally spaced in time every 0.2604 ms. This is a time resolution that I suppose the kernel isn't especially good with. Back in the early days of multitasking, modem constructors even had to upgrade all the UART chips because OSes were not able to keep up (and because it was a pure waste of CPU in 99,99 % of the cases). That's when the buffer was upgraded from 1 byte to 16 bytes. That was precisely when 38400 bps became a common serial rate, because 14400 bps modems all used MNP5 and/or v.42bis compression, and they needed to fake a fixed-rate COM port.
Have you tried adjusting the size of the system buffer for serial? Is that even an option?
I don't recall. If there was an option for it, then it surely was unsufficient for what I was doing, which was to send elaborate vector graphics to a plotter.
| Mathieu BOUCHARD ----- téléphone : +1.514.383.3801 ----- Montréal, QC