2013-08-05 59 views
2

如何使用C#控制USB到並行端口?使用C#將USB控制爲並行端口

USB轉並口:IEEE-1284(36Pins)

IEEE-1284引腳配置圖片:

http://i.stack.imgur.com/b75Z5.png

OS(操作系統):Windows 7的64位

編程語言:C#

我的代碼:

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
      int address = System.Convert.ToInt16(textBox1.Text); 
      int value = System.Convert.ToInt16(textBox2.Text); 

      AccessPort.output(address, value); 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show("Error: " + ex.ToString()); 
     } 
} 

AccessPort類別:

static class AccessPort 
{ 
    [DllImport("inpout32.dll", EntryPoint = "Out32")] 
    public static extern void output(int address, int value); 

    [DllImport("inpout32.dll", EntryPoint = "Inp32")] 
    public static extern int input(int adress); 
} 

我有LED(發光二極管)連接到D0。當我將地址設置爲1並將值設置爲1並單擊按鈕時,它不會給出錯誤,但LED不會點亮,因爲inpout32.dll是用於實際並行端口的庫,但我有USB到並行端口或者我的地址和值對於USB並行端口不正確港口。

如何使用C#編程語言使用USB至並行端口(LPT)點亮LED?

+0

您是否以管理員身份嘗試過運行Visual Studio的代碼?只是爲了檢查是否存在安全問題。 – Frode

+0

是的,我試過,但它不給出任何錯誤。我認爲問題是在圖書館我使用USB到並行端口,我認爲inpout.dll只適用於真正的並行端口或問題是在地址:USB有另一個地址 – Gigi10012

回答

0

有什麼問題是端口地址不是1.要檢查端口地址轉到設備管理器,展開端口(COM & LPT),雙擊你想要和去的lpt端口(並行端口)到標籤的資源和得到這個值(見下面的鏈接)

http://i.imgur.com/kcEMCGY.png

然後,你必須改變你如何地址轉換爲INT,因爲端口地址將是十六進制: INT地址= System.Convert.ToInt16(textBox1.Text,16);

然後在地址文本框中只是把這個值(在我的情況下它是0378)。

+0

好吧,但我不能在驅動程序管理器中看到我的IEEE - 1284 - 端口(COM和LPT)。 我可以在ControlPanel的設備和打印機選項卡中看到IEEE-1284。在設備和打印機選項卡中我單擊了它所說的IEEE-1284屬性:位置:Port_#0002.Hub_#0003 – Gigi10012

+0

humm,我不知道如何獲取端口地址,嘗試向我顯示的端口地址,有時他們是一樣的 – Miguel71

+0

我試過但同樣。沒有錯誤和LED沒有點亮 – Gigi10012