请教唐先生,串口发送的数据怎么会被改变?

xtang先生,在QNX4.25中,我用open(’/dev/ser1’,…)得到的FD来对串口发送接
受数据,已经能够正常工作,但最近发现一个问题就是如果数据中有0x0a(16进制a)这个字节数据,则在接受端收到的数据变成了两个字节为0x0a和0x0d,举个例子如果我发送10个字节全为a的数据,则接收端收到的是20个字节,其内容为adad…这样的排列。
串口驱动的命令行就是却省的如下:
/bin/Dev.ser -N/dev/ser1 3f8,4
我在其中加-E -F的开关都不起作用。

请问唐先生这是怎么回事?谢谢!

是tty的ICRNL标志位吧。试试用stty -icrnl </dev/ser1把它关掉。

程序上,可以用tcsetattr()来控制。

谢谢你Mr.xtang,我以前不知道用这个命令,现在知道了,我用stty +raw < /dev/ser1解决了我的问题。

但是我有个疑问就是在Dev.ser的help里已经写明了它的缺省模式是raw模式的,怎么还会出现我开始提出的那个现象呢。是Dev.ser的help资料不准确吗?