对于一个项目,我们在一个定制硬件上有几个 FTDI 串行到 USB 转换器。其中一些串行到 USB 转换器具有需要设置的特殊参数(即它们从何处获取数据)。现在,设置它的正常方法是使用 FTD2XX 库,这将允许我们直接在 USB 到串行转换器上设置数据。但是D2XX驱动不能和标准的ftdi_sio驱动同时使用,也就是说我们不能像普通设备一样使用串口。
我在这里有三个基本选择:
修改标准驱动程序以使用新的 IOCTL。由于我们有一个非常具体的目标环境,我会很好,但是我不确定是否有可能处理 USB 转换器在不同模式下工作时可能出现的所有细微差别.
让一切都使用 D2XX 驱动程序。这并不理想,因为如果我们需要使用另一个 FTDI USB 到串行转换器,任何需要使用该串行转换器的程序也必须使用 D2XX 驱动程序,这在我们想要使用不同的 USB 到串行转换器之前会很好(因为我们会像往常一样打开 /dev/ttyUSBX)
制作一个假的 TTY,例如 /dev/serialX,然后将信息传递给 D2XX 驱动程序。这样,我们仍然可以正常打开串口,但我们可以添加新功能来做更多高级选项。命名类似于我们现在所做的,即使用 udev 创建指向正确端口的符号链接。
选项#3 可能是这里最好的选择,但我不确定具体该怎么做。我研究了openpty功能,但这似乎并没有完全符合我的要求,主要是能够在假串口上设置 TTY 设置并在真实串口上设置相同的设置。我猜 mknod/mkdev 会以某种方式在这里使用,但我不知道具体如何。
解决这个问题的最佳方法是什么?