Loopback/Echo 字节通过串口接收
Loopback/Echo bytes received over serial port
在嵌入式 Linux 系统上 运行 Busybox 我正在尝试通过串行端口接收字节并回显接收到的所有内容。
系统设置是这样的:
Linux <-USB-> FTDI 芯片 <-UART-> MCU
在 UART 线上,我有一个逻辑分析仪监控 FTCI 芯片和 MCU 之间的数据。 MCU 和 Linux 具有相同的 UART 配置。
我编写的脚本在 Linux 系统上运行并且应该发回它从 MCU 接收到的所有数据。
到目前为止,我已经有了这个简单的 Bash 脚本,它可以接收 62 字节长的突发数据。超时设置为 5 秒作为一种活动信号。
#!/bin/bash
# Enable debugging
set -x
# Set the baudrate of the port
stty -F /dev/ttyUSB0 1500000
while true
do
# Read 62 bytes with a timout of 5 seconds to variable RESP.
read -N62 -t5 RESP < /dev/ttyUSB0
# Print out how many bytes we received
echo ${#RESP}
# Send back the data, -n for no trailing new line
echo -n $RESP > /dev/ttyUSB0
done
我在使用这个脚本时遇到了一些问题:
- 并非所有字节都能一致接收。我已经测试了一段时间,一次只看到完整的字节数。
- 它在UART总线上只输出0xFF值,这是通过逻辑分析仪观察到的。
为了接收正确的数据并将其正确发回,我在这里缺少什么?
通过@sawdust 的建议,我得到了一个有效的脚本。
最后我停止使用 read
命令。我无法让它在原始模式下工作。我无法在我的 Busybox 系统上使用 termios
作为它。我使用 dd
:
得到了一个有效的设置
#!/bin/bash
stty -F /dev/ttyUSB0 raw
stty -F /dev/ttyUSB0 1500000
dd if=/dev/ttyUSB0 count=62 of=/dev/ttyUSB0
在嵌入式 Linux 系统上 运行 Busybox 我正在尝试通过串行端口接收字节并回显接收到的所有内容。
系统设置是这样的: Linux <-USB-> FTDI 芯片 <-UART-> MCU 在 UART 线上,我有一个逻辑分析仪监控 FTCI 芯片和 MCU 之间的数据。 MCU 和 Linux 具有相同的 UART 配置。
我编写的脚本在 Linux 系统上运行并且应该发回它从 MCU 接收到的所有数据。
到目前为止,我已经有了这个简单的 Bash 脚本,它可以接收 62 字节长的突发数据。超时设置为 5 秒作为一种活动信号。
#!/bin/bash
# Enable debugging
set -x
# Set the baudrate of the port
stty -F /dev/ttyUSB0 1500000
while true
do
# Read 62 bytes with a timout of 5 seconds to variable RESP.
read -N62 -t5 RESP < /dev/ttyUSB0
# Print out how many bytes we received
echo ${#RESP}
# Send back the data, -n for no trailing new line
echo -n $RESP > /dev/ttyUSB0
done
我在使用这个脚本时遇到了一些问题:
- 并非所有字节都能一致接收。我已经测试了一段时间,一次只看到完整的字节数。
- 它在UART总线上只输出0xFF值,这是通过逻辑分析仪观察到的。
为了接收正确的数据并将其正确发回,我在这里缺少什么?
通过@sawdust 的建议,我得到了一个有效的脚本。
最后我停止使用 read
命令。我无法让它在原始模式下工作。我无法在我的 Busybox 系统上使用 termios
作为它。我使用 dd
:
#!/bin/bash
stty -F /dev/ttyUSB0 raw
stty -F /dev/ttyUSB0 1500000
dd if=/dev/ttyUSB0 count=62 of=/dev/ttyUSB0