有沒有一種檢測所有連接在Linux上的串行端口上的設備的好方法?我用C++編程,但也歡迎其他例子。C++ linux檢測所有的串行端口
你可以試着打開每個端口,當它成功時,將它添加到端口列表中,但這似乎不是一個很好的解決方案。
你可以進入開發主管,由於我的串口是USB端口,我可以檢查哪些ttyUSB ..文件已經制作完成。但是這對於非USB串行端口不起作用,因爲tty0到tty63的文件總是在這個目錄中。
我的例子:
std::string port;
int fd
std::vector<std::string>> list;
for(int i = 0; i < 256; ++i)
{
port.clear();
port.append("/dev/ttyUSB");
port.append(std::to_string(i));
fd = open(port.c_str(), O_RDWR | O_NOCTTY | O_DELAY);
if(fd != -1)
{
list.push_back(port);
}
}
謝謝!
串口通常命名爲'ttyS0'等。 – Hasturkun 2013-03-11 15:51:52
這給了我一個XY問題的感覺,你的實際問題是X,你認爲解決方案是Y,所以你問Y.爲什麼你想知道系統上的串行端口? – 2013-03-11 15:52:15
在1個端口上連接了ZigBee設備。由於我想讓用戶友好,我想列出所有可能性,以便用戶可以選擇。通常情況下,如果你插入ZigBee設備,你應該只返回一個端口號。 @Hasturkun在我的情況下,因爲我的串行設備使用USB連接,它被命名爲ttyUSB0。 – Silver 2013-03-11 17:12:52