2016-07-13 26 views
0

我正在使用C#创建一个软件,它将触发器发送到并行端口连接到计算机的特殊计算机。C#连接到范围为E000-E007的LTP3

我不能对硬件做任何事情,我试图通过LTP3发送数字,而LTP3的定义范围与平时不同,范围(根据DeviceManager)为E000-E007。

我正在使用c#,我试图发送事件,但它不起作用。我的代码对普通的LTP3有效,我使用632作为地址(或LTP1的情况下为888)。

我真的不明白它是如何工作的,什么是正确的端口?我应该更改代码吗?

这是在与发送该事件涉及的代码部分:

class PortControl 
{ 
    [DllImport("inpout32.dll", EntryPoint = "Out32")] 
    public static extern void Output(int adress, int value); // decimal 
} 

private void SendTrigger(int triggerId) 
{ 
    try 
    { 
     PortControl.Output(632, (short)triggerId); 
     Thread.Sleep(1); 
     PortControl.Output(632, 0); 
    } 
    catch (Exception e) 
    { 
     MessageBox.Show("Error in sending trigger: " + e.Message); 
    } 
} 

这项工作时,LPT3拥有标准范围内,但不是在这个陌生的范围E000-E007。

在此先感谢您的帮助!

回答

0

地址参数632是与十六进制值278相等的十进制数。同样,十六进制值E000的十进制等效值为57344

如果您喜欢,可以用十进制传递地址,但如果使用十六进制表示法,则读取起来要容易得多。只需在地址前加上0x即可:

PortControl.Output(0xE000, ...