与C#并行端口

时间:2010-05-30 21:18:20

标签: c# c++ parallel-port lpt

我正在尝试使用C#程序将数据发送到LPT1端口,遗憾的是没有成功。 我使用的是Windows 7 x64。 我尝试了x86和x64(inpoutx64.dll)dll的..

发送时使用x64 dll:

Output(888, 255);

它只是继续程序,因为一切正常,但我在万用表上看不到任何东西(只有静态0.02V)..

我还尝试了以下C ++:

int main () {
int val = 0;
printf("Enter a value\n");
scanf("%d", &val);
_outp(0x378, val);
getchar();
_outp(0x378, 0);
return 0; }

但它引发了一个例外:

Unhandled exception at 0x01281428 in ppac.exe: 0xC0000096: Privileged instruction.

我记得有一次我在xp(C#而不是C ++代码)上做了类似的工作,我希望在win7上也可以。 请帮帮我。

感谢。

1 个答案:

答案 0 :(得分:6)

_outp使用的意义上的IO端口与您尝试使用并行端口的方式不同。 IO端口是获取对不同设备的原始访问的处理器级方式。使用_outp的IO端口应该是设备驱动程序所做的事情。因此,any version of windows that's modern enough中的特权(即仅内核)具有良好的内核/用户空间分离(即基于Windows NT的任何内容)。我几乎100%肯定你从来没有_outp在XP上工作。

要访问高级代码中的并行端口,只需使用文件名LPT1:将其打开,就像普通文件一样。