通过串口传输文件

File transfer via serial port

我正在尝试通过串行端口发送文件。我尝试在 bash 脚本中发送 picocom 命令。然而,该设备会写出一个选项菜单。当它到达文件传输步骤时 - 它写出 'C' 直到文件被发送,之后它进行握手并继续传输。使用脚本,我无法发送击键 'C-a' 和 'C-s' 来获取 picocom 的“*** 文件:”提示。我可以手动完成。我什至尝试将 bash 和 python 以及 pyautogui 组合用于击键,bash echo 命令发送击键的十六进制版本。我什至尝试通过脚本和 stty 发送 'sz' 命令。所有这些尝试都没有成功。

所以我切换到 python,并尝试了 xmodem library in python。我应该使用 ymodem。我认为图书馆中的 'YMODEM batch transmission session' 可以完成这项工作。 modem.send 命令总是出错,文件未发送。

Read Byte: b'C'
Put Byte: 133
Read Byte: b'C'
send error: expected ACK; got b'C' for block 1
Put Byte: 133
Read Byte: b'C'
send error: expected ACK; got b'C' for block 1

我该如何解决这个问题?

最终使用 python 和 bash 的组合 - python 进行串行通信和解析二进制文件的文件名,并且 bash sttysb 用于传输二进制文件的命令。