使用C#控制USB到并行端口

本文关键字:并行端口 USB 控制 使用 | 更新日期: 2023-09-27 18:26:26

如何使用C#控制USB到并行端口?

USB到并行端口:IEEE-1284(36Pins)

IEEE-1284引脚配置图像:

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

操作系统:Windows 7 x64

程序设计语言: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());
      }
}

访问端口类别:

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?

使用C#控制USB到并行端口

问题在于端口地址不是1。要检查端口地址,请转到设备管理器,展开端口(COM&LPT),双击所需的LPT端口(并行端口),然后转到选项卡资源并获取此值(请参阅下面的链接)

https://i.stack.imgur.com/wiTV3.png

然后,您必须更改将地址转换为int的方式,因为端口地址将是十六进制的:int address=System.Convert.ToInt16(textBox1.Text,16);

然后在地址文本框中输入该值(在我的情况下为0378)。