我需要一个串行端口接收数据,另一个端口传输相同的数据。如何在 GNU/Linux 中进行此类设置。一个端口是蓝牙创建的端口,另一个是 USB 转串行适配器。
我很可能会使用最新版本的 64 位 Mint(如果我没记错的话,是 12)。
答案1
索卡特可以处理串行端口。
它通常与网络接口一起使用,可以中继数据,但它也可以处理串行 TTY 设备。上述链接中的示例不包括串行-串行中继,但从这些示例中,您可能可以找出应该实现该功能的命令参数。
更新:
要将串行端口 ttyS0 链接到另一个串行端口:
socat /dev/ttyS0,raw,echo=0,crnl /dev/ttyS1,raw,echo=0,crnl
从http://technostuff.blogspot.co.uk/2008/10/some-useful-socat-commands.html
socat 还有一些选项,以便您可以(如果愿意)记录正在中继的数据。
答案2
对于快速而肮脏的程序,设置终端仿真器程序,例如微型计算机,用于每个串行端口。这将为您提供一个交互式全双工接口,用于在端口之间传输文本。内置了几种调制解调器传输协议,用于文件和二进制数据传输。
对于更复杂的数据传输,例如处理某种自定义数据格式/协议,您必须编写程序来访问串行端口来处理数据。
更新
请提供更多有关您要执行的操作的详细信息。两个串行端口是否要连接到同一台 PC,还是每个端口连接到一台 PC?如果这是此“链接问题”的目的,那么两个串行端口无法相互连接的原因是什么?
由于其中一个“串行端口”是 USB-RS232 适配器,因此没有必要通过 PC 连接每个串行端口。将两个串行端口相互连接(可能需要连接适配器),然后将 USB 插入 PC。使用终端仿真程序来处理现在连接到 PC 的一个串行端口。
Bluetooth <----> USB adapter <---> PC