2011-04-27 60 views
1

我遇到了一些C問題。我嘗試在VS 2010 Ultimate中的Windows 7 Professional x64中編寫並行端口。 因爲我沒有一個並行端口,所以我使用USB轉換器 - > Parallel並且Windows正確安裝了驅動程序。 我在並行連接器的末端焊接了8個LED-s,當我將USB連接到計算機時它們都工作正常。 現在,我想通過我的C語言編寫的程序,它是控制並口:C中的特權指令

#include <stdio.h> 
#include <dos.h> 
#include <conio.h> 
#include <Windows.h> 
/********************************************/ 
/*This program set the parallel port outputs*/ 
/********************************************/ 

void main (void) 
{ 
//clrscr();   /* clear screen */ 
_outp(0x378,0xff); /* output the data to parallel port */ 
getch();    /* wait for keypress before exiting */ 
} 

程序被編譯和運行,但我得到一個錯誤信息:

Unhandled exception at 0x00f313a5 in portovi.exe: 0xC0000096: Privileged instruction. 

我已閱讀該端口IO在Windows NT機器中被禁用,並且您需要一個特定的驅動程序來執行此操作。有沒有解決辦法?

+1

conio.h是一種可怕的,可怕的寫作方式。 – 2011-04-27 17:16:11

回答

1

有辦法解決這個問題。例如見here

+0

我不知道我是否做了所有說的。我把inpoutx64.dll放到system32/drivers文件夾中。我應該重新編譯項目幷包含下載的庫? – Juraj 2011-04-27 17:54:16

+0

不會幫助。看到http://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/2d52ceda-7c0b-4fd7-bf99-cbd12b2be898 – 2011-04-27 17:56:42

+0

我在你給我的鏈接中遇到了這篇文章:http:// support .microsoft.com/kb/322091/zh-cn /它似乎是唯一的選擇 – Juraj 2011-04-27 18:03:17

0

您的USB->並行轉換器具有創建虛擬並行端口的驅動程序。它實現了Windows並行端口API。它沒有實現PC/AT並行端口寄存器級的API,即使你被允許寫入I/O端口0x0378,你也不會在那裏找到任何東西。系統總線上只有真正的PC/AT並行端口(ISA或PCI)使用該寄存器。

+0

我認爲其實也是如此。我可以寫入0x0378到我連接的USB集線器設備ID嗎? – Juraj 2011-04-27 17:56:50

+0

@Juraj:不。USB集線器已經被您的計算機上的所有其他USB驅動程序使用,直接與它交談將是一個壞主意(也非常複雜)。 WinUSB可讓您直接與某些類型的USB設備進行通信,但我不認爲其中包含並行端口。檢查你的USB->並行電纜製造商是否提供了一個bit-banging API。例如,http://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf – 2011-04-27 17:59:45

+0

謝謝您澄清一些事情。不,電纜不支持它。我買了http://www.delock.com/produkte/gruppen/USB+Adapter/Delock_USB_11_parallel_adapter_61330.html。我想我應該得到其中一個。 – Juraj 2011-04-27 18:05:55