예제 #1
0
        public bool Init()
        {
            const string api = "gcdapi.dll";

            if (!File.Exists(api))
            {
                return(false);
            }

            var ptrDll = Define.LoadLibrary(api);

            if (ptrDll == IntPtr.Zero)
            {
                return(false);
            }

            var ptrLoad = LoadExternalFunction(ptrDll, "gcdapi_Load");

            if (ptrLoad == IntPtr.Zero)
            {
                return(false);
            }

            var ptrIsConnected = LoadExternalFunction(ptrDll, "gcapi_IsConnected");

            if (ptrIsConnected == IntPtr.Zero)
            {
                return(false);
            }

            var ptrUnload = LoadExternalFunction(ptrDll, "gcdapi_Unload");

            if (ptrUnload == IntPtr.Zero)
            {
                return(false);
            }

            var ptrGetTimeVal = LoadExternalFunction(ptrDll, "gcapi_GetTimeVal");

            if (ptrGetTimeVal == IntPtr.Zero)
            {
                return(false);
            }

            var ptrGetFwVer = LoadExternalFunction(ptrDll, "gcapi_GetFWVer");

            if (ptrGetFwVer == IntPtr.Zero)
            {
                return(false);
            }

            var ptrWrite = LoadExternalFunction(ptrDll, "gcapi_Write");

            if (ptrWrite == IntPtr.Zero)
            {
                return(false);
            }

            var ptrRead = LoadExternalFunction(ptrDll, "gcapi_Read");

            if (ptrRead == IntPtr.Zero)
            {
                return(false);
            }

            var ptrWriteEx = IntPtr.Zero;     //Refer to the CM api for these
            var ptrReadEx  = IntPtr.Zero;

            var ptrCalcPressTime = LoadExternalFunction(ptrDll, "gcapi_CalcPressTime");

            if (ptrCalcPressTime == IntPtr.Zero)
            {
                return(false);
            }

            try
            {
                _cm.Load          = (Define.GcapiLoad)Marshal.GetDelegateForFunctionPointer(ptrLoad, typeof(Define.GcapiLoad));
                _cm.IsConnected   = (Define.GcapiIsConnected)Marshal.GetDelegateForFunctionPointer(ptrIsConnected, typeof(Define.GcapiIsConnected));
                _cm.Unload        = (Define.GcapiUnload)Marshal.GetDelegateForFunctionPointer(ptrUnload, typeof(Define.GcapiUnload));
                _cm.GetTimeVal    = (Define.GcapiGetTimeVal)Marshal.GetDelegateForFunctionPointer(ptrGetTimeVal, typeof(Define.GcapiGetTimeVal));
                _cm.GetFwVer      = (Define.GcapiGetFwVer)Marshal.GetDelegateForFunctionPointer(ptrGetFwVer, typeof(Define.GcapiGetFwVer));
                _cm.Write         = (Define.GcapiWrite)Marshal.GetDelegateForFunctionPointer(ptrWrite, typeof(Define.GcapiWrite));
                _cm.Read          = (Define.GcapiRead)Marshal.GetDelegateForFunctionPointer(ptrRead, typeof(Define.GcapiRead));
                _cm.CalcPressTime = (Define.GcapiCalcPressTime)Marshal.GetDelegateForFunctionPointer(ptrCalcPressTime, typeof(Define.GcapiCalcPressTime));
            }
            catch (Exception ex)
            {
                //return ex.Message.ToString();
                return(false);
            }

            return(true);
        }