如何在Windows 10 64位上与并行端口通信?

时间:2019-06-18 13:10:50

标签: c# triggers parallel-port

我正在尝试使用并行端口将触发器发送到旧设备。 我们正在使用Windows 10 64位,应用程序应为c#
我找到了inpout32 / inpoutx64库。 我已经尝试了以下(简单和直接)代码,但无法正常工作。

如何与64位Windows 10 PC上的PCI卡并行端口通信?

端口地址:0xCFF8

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Runtime.InteropServices;
using System.Diagnostics;

namespace MyParallelPortTest
{
    class Program
    {



        [DllImport("inpoutx64.dll")]
        private static extern bool GetPhysLong(ref int PortAddress, ref uint Data);
        [DllImport("inpoutx64.dll")]
        private static extern bool SetPhysLong(ref int PortAddress, ref uint Data);

        [DllImport("inpoutx64.dll", EntryPoint = "IsInpOutDriverOpen")]
        private static extern UInt32 IsInpOutDriverOpen_x64();
        [DllImport("inpoutx64.dll", EntryPoint = "Out32")]
        private static extern void Out32_x64(short PortAddress, short Data);
        [DllImport("inpoutx64.dll", EntryPoint = "Inp32")]
        private static extern char Inp32_x64(short PortAddress);

        [DllImport("inpoutx64.dll", EntryPoint = "DlPortWritePortUshort")]
        private static extern void DlPortWritePortUshort_x64(short PortAddress, ushort Data);
        [DllImport("inpoutx64.dll", EntryPoint = "DlPortReadPortUshort")]
        private static extern ushort DlPortReadPortUshort_x64(short PortAddress);

        [DllImport("inpoutx64.dll", EntryPoint = "DlPortWritePortUlong")]
        private static extern void DlPortWritePortUlong_x64(int PortAddress, uint Data);
        [DllImport("inpoutx64.dll", EntryPoint = "DlPortReadPortUlong")]
        private static extern uint DlPortReadPortUlong_x64(int PortAddress);

        [DllImport("inpoutx64.dll", EntryPoint = "GetPhysLong")]
        private static extern bool GetPhysLong_x64(ref int PortAddress, ref uint Data);
        [DllImport("inpoutx64.dll", EntryPoint = "SetPhysLong")]
        private static extern bool SetPhysLong_x64(ref int PortAddress, ref uint Data);


        static void Main(string[] args)
        {
            //53240 is CFF8 in decimal
            int PortAddress =  int.Parse("CFF8", System.Globalization.NumberStyles.HexNumber);
            Debug.WriteLine("before sending " + PortAddress);
            uint Data =33;

            DlPortWritePortUlong_x64(PortAddress, Data);
            Debug.WriteLine(" Sent");
        }
    }
}

0 个答案:

没有答案