2013-07-21 96 views
1

我想在Linux中使用串行端口做一些簡單的事情。具體做法是:與不常見的端口名稱的Linux串行通信

平臺 - BeagleBone黑

OS - 埃Linux的

單聲道版本2.10.8.1(ARM)

董事會實現這六個串口作爲ttyO0通過ttyO5代替的ttyS0。

它實際上有ttyS0到ttyS3。

當我枚舉端口它找到ttyS0等,但不是ttyO0等。不幸的是,它是實際上有真正的串行端口ttyO0等端口。有沒有辦法讓Mono能夠使用這些?

謝謝!

菲爾

+0

有*真正*串行端口是在商用硬件上相當罕見,他們通常模擬使用USB。但是你的Beagleboard有兩個。所以它實際上就是ttyS0,它是真正的串行端口,你實際上想要使用仿真的那個,即使用FTDI芯片的那個。你需要一種方法來告訴你的程序。使用配置參數是處理該問題的正常方法。 –

+0

謝謝,但模擬的端口是ttyUSB0。真正的端口是ttyO0到ttyO5。 BeagleBone Black上沒有FTDI芯片。 – user911461

回答

2

自己想出來。

真的很簡單。他們是專門在掃描從/ dev/TTYS端口名稱:

public static string [] GetPortNames() 
     { 
       int p = (int) Environment.OSVersion.Platform; 
       List<string> serial_ports = new List<string>(); 

       // Are we on Unix? 
       if (p == 4 || p == 128 || p == 6) { 
         string[] ttys = Directory.GetFiles("/dev/", "tty*"); 
         foreach (string dev in ttys) { 
           if (dev.StartsWith("/dev/ttyS") || dev.StartsWith("/dev/ttyUSB")) 
             serial_ports.Add(dev);