【下载说明】
1、单击上面这个地址,打开下载页面。
2、点普通下载--等待30秒--点“下载”按钮--保存
介绍
使用C#来做一个数据寄存器控制的程序时很简单的。当我对控制外部电子设备感兴趣的时候,我一直在寻找一个类似的应用程序,但是我发现没有正常工作的,因此写了一个。这篇文章是关于如何使用C#以及inpout32.dll来控制并口LPT的数据寄存器的。
你可以使用这个简单的程序来测试一些外部电子设备,测试你的并口的数据寄存器,以便了解他们是怎么工作的。
1.Inpout32.dll 是怎么工作的?
inpout32.dll的源代码请查看 http://code.google.com/p/stimqt/downloads/detail?name=inpout32.dll
inpout32.dll最大的一个优点是,不需要对inpout32.dll做任何的更改,既可以在所有的Windows版本中运行。这个DLL会在调用函数时检测操作系统的版本。如果操作系统式Win9x,它会用_inp()和_outp()函数来读写并口。另外,如果操作系统式WinNT、2000或者XP,他会安装一个内核模式的驱动,并通过这个驱动来操作并口。用户的代码不需要考虑是在什么样的操作系统上运行的。这个DLL也能在WinNT的克隆系统,如win9x上使用。其流程图如下。
64位系统需要使用Inpoutx64.dll.
在工程中,可以从库中使用Out32函数。
namespace ParallelPortControl
{
class PortControl // Import dll to project
{
[DllImport("inpout32.dll", EntryPoint = "Out32")]
public static extern void Output(int address, int value); // decimal
}
public partial class Form1 : Form
{
int decData = 0;
int decAdd = 888; // 378h Selected Default
PortControl.Output(decAdd, decData);
}
}
2.怎么在Windows中知道并口的地址 ?
在Windows系统上,很容易找到并口的地址。在桌面点击右键,选择”管理“-》”设备管理器”-》端口-》LPT1或者LPT2.
IEEE 1284 标准的端口地址
数据寄存器 | 状态寄存器 | 控制寄存器 | |
Range1 | 3BCh | 3BDh | 3BEh |
Range2 | 378h | 379h | 37Ah |
Range3 | 278h | 279h | 27Ah |
3.使用十进制输入
128 64 32 16 8 4 2 1
D7 D6 D5 D4 D3 D2 D1 D0

如果你想要发送10010110(1是逻辑高电平,0是逻辑低电平)只需要将十进制数计算出来就可以了。上面二进制数的十进制值的计算方法是:128+16+4 = 148.