Linux serial port listener and interpreter?

To remain fairly system independent, use a cross platform programming language: like Python, use a cross platform serial library like : pySerial and do the processing inside a script. I have used pySerial and I could run the script cross platform with almost no changes in source code. By using BASH you're limiting yourself a fair little.


Is this not what you're looking for?

while read -r line < /dev/ttyS2; do
  # $line is the line read, do something with it
  # which produces $result
  echo $result > /dev/ttyS2
done

It's possible that reopening the serial device on every line has some side-effect, in which case you could try:

while read -r line; do
  # $line is the line read, do something with it
  # which produces $result
  echo $result > /dev/ttyS2
done < /dev/ttyS2

You could also move the output redirection, but I suspect you will have to turn off stdout buffering.