termios.h
文件关闭并再次打开后,功能是否会更改设置?
我想在更高级的语言(Racket)中使用串行通信,该语言仅公开对文件端口的读取和写入,但不公开任何附加功能(termios
、ioctl
、fnctl
)。我可以使用 FFI 绑定这些附加功能并使用它们,但随后我需要关闭给定文件并再次打开它以使用 Racket 功能进行读/写 - 因此我的问题。
答案1
即使串行端口关闭,大多数termios
设置(例如波特率)也会保留。但是,关闭串行端口确实会产生一些您可能不希望出现的影响,例如取消 DTR 断言。
但是,您应该能够在应用程序中保持串行端口打开,并避免任何不必要的影响,包括避免丢失可能在关闭时重置的任何设置更改。先在Racket中打开端口即可;然后使用 FFI 功能执行您需要的任何操作ioctl
,fcntl
这可能涉及再次打开串行端口并关闭第二个引用;然后使用您最初从 Racket 打开的参考。此外,您甚至可以直接从 Racket 获取文件描述符并将其用于 FFI,而无需再次打开串行端口 - 我对此不确定,因为我不知道 Racket 是什么。