Ejemplo n.º 1
0
        private readonly ushort terminalID;             // die ID des Kartenterminals


        /// <summary>
        /// Initialisiert eine neue Instanz der CardTerminalClient-Klasse und initiiert eine neue Host/CT-Verbindung
        /// </summary>
        /// <param name="path">der Pfad zur herstellerspezifischen DLL mit der CT-API-Implementierung</param>
        /// <param name="portNumber">Portnummer der physikalischen Schnittstelle</param>
        /// <param name="terminalID">die logische Kartenterminal-Nummer</param>
        public CardTerminalClient(string path, ushort portNumber = 1, ushort terminalID = 1)
        {
            this.cardTerminalApi = new CtApi(path);
            this.terminalID      = terminalID;

            // Initiieren der Host/CT-Verbindung
            this.cardTerminalApi.Init(this.terminalID, portNumber);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Lädt die Kartenterminal-Hersteller-spezifische Implementierung der CT-API
        /// </summary>
        /// <param name="path">der Pfad zur DLL-Datei mit der herstellerspezifischen CT-API-Implementierung</param>
        public CtApi(string path)
        {
            // die herstellerspezifische DLL mit der CT-API des zu verwendenden Geräts laden
            this.libraryHandle = CtApi.LoadLibrary(path);
            if (this.libraryHandle == IntPtr.Zero)
            {
                throw new FileLoadException(null, path);
            }

            // Pointer/Delegate für die CT_init-Funktion laden
            IntPtr ctInitFunctionHandle = CtApi.GetProcAddress(this.libraryHandle, "CT_init");

            if (ctInitFunctionHandle == IntPtr.Zero)
            {
                throw new InvalidOperationException("GetProcAddress CT_init");
            }
            this.ctInit = Marshal.GetDelegateForFunctionPointer <CT_init>(ctInitFunctionHandle);

            // Pointer/Delegate für die CT_data-Funktion laden
            IntPtr ctDataFunctionHandle = CtApi.GetProcAddress(this.libraryHandle, "CT_data");

            if (ctDataFunctionHandle == IntPtr.Zero)
            {
                throw new InvalidOperationException("GetProcAddress CT_data");
            }
            this.ctData = Marshal.GetDelegateForFunctionPointer <CT_data>(ctDataFunctionHandle);

            // Pointer/Delegate für die CT_close-Funktion laden
            IntPtr ctCloseFunctionHandle = CtApi.GetProcAddress(this.libraryHandle, "CT_close");

            if (ctCloseFunctionHandle == IntPtr.Zero)
            {
                throw new InvalidOperationException("GetProcAddress CT_close");
            }
            this.ctClose = Marshal.GetDelegateForFunctionPointer <CT_close>(ctCloseFunctionHandle);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Gibt verwendete Ressourcen wieder frei
 /// </summary>
 public void Dispose()
 {
     CtApi.FreeLibrary(this.libraryHandle);
 }