Hi
Hmmm, if I were you, I would have a 'LookSee' at @MarkMLl's github thingy and see how he does it... 
Regards Benny
Basically, I'm pretty sure that people have looked at direct file access to (typically) /dev/ttyUSBn (on unix, YMMV) in the past and found it wanting. It might be worth trying again though, but there's lots of things like getting the control lines set that you have to use ioctl() for.
The serial.pp unit which is a standard part of the RTL is OK for Windows and Linux, although I've not done any maintentance on it recently. It's untested with the BSD family of OSes, i.e. including Macs. There's also another support file in one of my Github repos that does things like checking how much data is available: the comments go into some detail about a nasty kernel-level problem that affects Linux.
The telnet stuff includes setup of the low-level buffers that support WriteLn() etc. That probably isn't necessary /if/ going directly to the named port works... basically, I do a lot of instrumentation access and normally serial.pp plus possibly Str() etc. is entirely adequate.
MarkMLl