Embedded
如何讀出未使用的串列引腳(RTS、CTS 等)?
我有一個用於 RS-232 通信的介面。我需要這個介面來進行簡單的通信(沒有奇偶校驗位或流控制 → TX、RX 和接地),但現在我有相當多的 4 個引腳未使用(RTS、DTR、DCD/DSR、CTS)並且想知道我是否可以濫用這些引腳其他信號,為此我需要一種讀出這些引腳的方法。那麼如何在基於 Linux 的嵌入式系統上做到這一點呢?
seterial
報告介面處於16550A
UART 模式並根據https://en.wikipedia.org/wiki/16550_UART: “用於控制外部調製解調器的握手線,可通過軟體控制。”你還有什麼需要知道的嗎?
RTS 和 DTR 是輸出引腳 - 您可以設置。
DCD 和 CTS 是輸入引腳,只能讀取。
該設備可能預設設置為硬體握手。您可以使用
tcsetattr
(請參閱 CRTSCTS)更改此設置。然後你可以使用TIOCMBIS
ioctl 來設置 RTS 和 DTR好的參考是:
以上可能是以 Linux 為中心的。
要更多 POSIX,請參閱POSIX 作業系統的串列程式指南
我從指南中提取了這個例子:
#include <unistd.h> #include <termios.h> int fd; int status; ioctl(fd, TIOCMGET, &status); status &= ~TIOCM_DTR; ioctl(fd, TIOCMSET, status);
在Stack Overflow 上,您可以找到一些關於如何正確設置埠的意見。