vselax, спасибо за помощь!
проблема решилась, точно не понял из-за чего так просиходит, дело именно в RTS
проверил в программе для win
https://sites.google.com/site/terminalbpp/ если RTS=1 то данные не принимаются
почему при чтении разными способами в Linux(например CuteCom) RTS равен 1 не знаю, может так и должно быть?
или надо что-то поменять в настройка порта через stty, сейчас настройки такие:
$ stty -a < /dev/ttyUSB0
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
gem для руби serialport позволяет rts изменять, вот скрипт который в итоге работает
возможно для моей задачи этого достаточно, если выясню что-то еще - напишу, вдруг кому-то пригодиться
#simplest ruby program to read from serial,
#using the SerialPort gem
#(http://rubygems.org/gems/serialport)
require "serialport"
#params for serial port
port_str = "/dev/ttyUSB0"
baud_rate = 9600
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE
sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity)
sp.rts = 0
while c=sp.getc do
printf("%c", c)
end
sp.close