Skip to contentSkip to conversation

Reading more than 255 bytes at once

DISCUSSION Dennis Borgmann 1 participant 1 message Jan 25, 2011 TTY layer and serial drivers

lore
Share & tools
lore
#0 lore raw

Hello linux-serial list!

I am using termios to process data on a /dev/ttyUSB*-port. Data is coming in on one of these ports in burst of over 500bytes. I am doing this with kernel 2.6.33.7, which contains FTDI-driver in Version 1.5.0. My serial-hardware is a FT4232 and I am using non-canonical input.

My problem is, that I can only read bursts of up to 255 bytes, since the array of control characters within the kernel named c_cc represents only an unsigned char. So, if I set a value higher than 255 to c_cc[VMIN], it won't be set the way I want within the kernel.

How would it be possible to read bursts of over 255 bytes? Right now I am doing a workaround, which checks for data within the buffer (ioctl SIOCINQ) of the serial driver and as soon as it gets above a wanted value (let's say 501 bytes), I read the buffer and flush it.

I would rather like to do this with select(2) in combination with read(2), which only returns after 501 bytes are available.

I already sent this question on ftdi-usb-sio-devel and privately to the developers of the FTDI-driver in use without any success.

Is there a way to do this?

Very kind regards,
Dennis