2014-02-27 55 views
0

我不是Linux或串口編程的專家,我對Linux串口通信的理解是:系統將某個/ dev/ttyS *文件鏈接到某個物理串口,然後系統或其他程序可以與任何通過/ dev/ttyS *文件附加到該串行端口的設備。無論連接了什麼設備,/ dev/ttyS *文件都將被分配/鏈接到串行端口。如何知道哪個ttyS *文件鏈接到哪個串口?

如果我對這個問題是正確的,那麼在C中有什麼辦法可以獲得鏈接到物理串行端口的所有這樣的/ dev/ttyS *文件嗎?

已經搜遍了谷歌和SO,沒有什麼真正有用的發現,PLZ halp!

PS,我可以通過找到這些文件:

dmesg | grep ttyS 

,但我需要一個更精確的方式來獲得這些信息,像libudev能做到這一點?

回答

0

我不是很確定在這裏問什麼,但/ dev/ttyS *映射的方式在年齡上並沒有改變,第一個串行端口有時也被稱爲DOS名稱COM1,仍然可以訪問爲/dev/ttyS0,第二個是/dev/ttyS1等。

從內核文件,即從文件Documentation/devices.txt你還是可以找到一些有用的信息:

4 char  TTY devices 
       0 = /dev/tty0   Current virtual console 

       1 = /dev/tty1   First virtual console 
       ... 
      63 = /dev/tty63  63rd virtual console 
      64 = /dev/ttyS0  First UART serial port 
       ... 
      255 = /dev/ttyS191  192nd UART serial port 

      UART serial ports refer to 8250/16450/16550 series devices. 

如果你的問題是如何找到您的系統上所有串行端口,見/dev/serial裏面應該有(除非你使用真正古老的內核)條目by-id和by-uuid。

+0

那麼,這些ttyS *文件總是存在/ dev /文件夾下,對吧?可能有幾十個。但是在我的主板上,可能只有一個物理串行端口,所以我的問題是,哪一個ttyS *文件是我可以與物理串行端口通信的確切的一個,系統會自動將一個物理串行端口與一個ttyS *文件,對吧? @SamiLaine – Sean

+0

但是,在/ dev/serial中,只有那些實際存在的udev節點。 –

+0

酷!但是我找不到/ dev/serial文件夾,在/ dev中沒有名爲「serial」的文件夾,甚至沒有關閉。我正在使用CentOS 6.4 x64,我應該在其他地方看嗎? @薩米 - 萊恩 – Sean

相關問題