linux (raspbian) 中的串口
serial port in linux (raspbian)
我需要在用 C 编写的应用程序中使用串口接收数据,在 Linux (raspbian) 中。
这是用于半双工数据采集(通过 RS485),因此当任何设备发送数据时,所有其他设备都必须监听。
问题是 raspbian 机器的串行端口上接收到的每个字符都被发送回外部设备(在调制解调器术语中 - echo
)。即使应用程序不是 运行.
也会发生这种情况
这一定是串口的配置(在我的例子中是 USB 到 rs232 转换器),但我找不到解决这个问题的方法。
stty 命令的输出为:
stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
-brkint -imaxbel
谢谢
我没想到,
stty -F /dev/ttySX raw -echo -echoe -echok -echoke
手册页中可能还有更多标志:
[-]crterase
echo erase characters as backspace-space-backspace
* crtkill
kill all line by obeying the echoprt and echoe settings
* -crtkill
kill all line by obeying the echoctl and echok settings
* [-]ctlecho
echo control characters in hat notation ('^c')
[-]echo
echo input characters
* [-]echoctl
same as [-]ctlecho
[-]echoe
same as [-]crterase
[-]echok
echo a newline after a kill character
* [-]echoke
same as [-]crtkill
[-]echonl
echo newline even if not echoing other characters
* [-]echoprt
echo erased characters backward, between '\' and '/'
我需要在用 C 编写的应用程序中使用串口接收数据,在 Linux (raspbian) 中。
这是用于半双工数据采集(通过 RS485),因此当任何设备发送数据时,所有其他设备都必须监听。
问题是 raspbian 机器的串行端口上接收到的每个字符都被发送回外部设备(在调制解调器术语中 - echo
)。即使应用程序不是 运行.
这一定是串口的配置(在我的例子中是 USB 到 rs232 转换器),但我找不到解决这个问题的方法。
stty 命令的输出为:
stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
-brkint -imaxbel
谢谢
我没想到,
stty -F /dev/ttySX raw -echo -echoe -echok -echoke
手册页中可能还有更多标志:
[-]crterase
echo erase characters as backspace-space-backspace
* crtkill
kill all line by obeying the echoprt and echoe settings
* -crtkill
kill all line by obeying the echoctl and echok settings
* [-]ctlecho
echo control characters in hat notation ('^c')
[-]echo
echo input characters
* [-]echoctl
same as [-]ctlecho
[-]echoe
same as [-]crterase
[-]echok
echo a newline after a kill character
* [-]echoke
same as [-]crtkill
[-]echonl
echo newline even if not echoing other characters
* [-]echoprt
echo erased characters backward, between '\' and '/'