Как я могу общаться с моим параллельным портом в Windows 10 64 бит? - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь использовать параллельный порт для отправки триггеров на старое устройство.Мы используем Windows 10 64 бит, и приложение должно быть c #
Я нашел библиотеку inpout32 / inpoutx64.Я пробовал следующий (простой и прямой) код, но он не работает.

Как я могу связаться с картой PCI Параллельный порт на 64-битном ПК с Windows 10?

Адрес порта: 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");
        }
    }
}
...