2012-08-14 21 views
1

我已經成功識別了Visual C#express中的兩個驅動器和串行端口,但我仍然無法訪問特定設備(RepRap Printer)。我想發送一個字符串數組,但首先我需要找到它,我該怎麼做?我使用Windows 7如何訪問設備並向其發送數據?

要獲取驅動器:

using System.Linq; 
using System.IO; 
using System; 

    class Program 
    { 
      static void Main(string[] args) 
      { 
       var drives = DriveInfo.GetDrives(); 
       DriveInfo[] allDrives = DriveInfo.GetDrives(); 
        foreach(DriveInfo dv in drives)   
        {    
          Console.WriteLine("drive Name:{0}", dv.Name);  
        }  
        Console.ReadLine(); 
      } 
     } 

得到串口:

using System; 
using System.IO.Ports; 

namespace SerialPortExample 
{ 
    class SerialPortExample 
    { 
     public static void Main() 
     { 
      string[] ports = SerialPort.GetPortNames(); 
      Console.WriteLine("The following serial ports were found:"); 
      foreach (string port in ports) 
      { 
       Console.WriteLine(port); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 

許多在此先感謝!

+0

設備是否支持通過串口訪問固件?你的代碼似乎甚至沒有試圖這樣做。 – 2012-08-14 16:01:03

+0

@Ramhound是現在它連接到COM5 @ 250000我可以通過打印機附帶的軟件看到它。我想我需要打開並關閉每個端口以檢查設備是否存在。 – 2012-08-14 16:07:52

+1

如果您嘗試訪問打印機,爲什麼要「掃描」「驅動器」?你似乎正在編寫一個用戶程序。 (未提及的)操作系統將僅允許/暴露設備驅動程序支持的設備功能,即讀/寫加* ioctl()*操作。通過用戶配置**,應用訪問特定設備的典型方法是**。通知pgm在安裝對話框的特定端口上使用某種設備。這解決了安裝了2個設備的問題,並且該應用「找到」錯誤的單元。如果你堅持要找串口設備,試試看/ proc/tty/serial – sawdust 2012-08-14 19:28:52

回答

1

我建議你首先檢查一下這兩個問題和答案:

Get the device name connected to the serial port
這一個解釋了不久,爲什麼它是很難的,但對如何讓Windows的這是什麼知道有關設備的一些線索

Getting Serial Port Information
下面是一些進一步的代碼示例。

通常情況下,您可能會希望通過它的名稱找到系統分配給它的設備 - 您probalby知道名稱以及類似「reprap#1」等內容。我只是猜測。要求掃描所有COM設備名稱並將其顯示給用戶以便他可以選擇合適的名稱可能是個好主意。

如果您想自動檢測,您可以嘗試通過某些較低的像驅動程序名等級別的細節,但通常最好把它留給用戶。

相關問題