/** * Attenzione :: * Questo metodo funziona anche se lo scanner è stato scollegato fisicamente dal PC. * Probabilmente è il driver che risponde e non interroga veramente il dispositivo attraverso la porta usb */ private void LeggiParametriScanner() { if (deviceHandle == IntPtr.Zero) { throw new InvalidOperationException("Il device handle dello scanner non è inizializzato"); } byte[] paramValue = new byte[4]; int size = 4; zkfp2.GetParameters(deviceHandle, 1, paramValue, ref size); zkfp2.ByteArray2Int(paramValue, ref imgWidth); size = 4; zkfp2.GetParameters(deviceHandle, 2, paramValue, ref size); zkfp2.ByteArray2Int(paramValue, ref imgHeight); // Ora che so le dimensioni dell'area di scanning, alloco il buffer per contenere i byte imgBuffer = new byte[imgWidth * imgHeight]; // ricavo qualche info aggiuntiva che può essere utile da stampare byte[] buffer = new byte [1024]; infoScanner = new InfoScanner(); size = 1024; zkfp2.GetParameters(deviceHandle, 1101, buffer, ref size); infoScanner.vendor = Encoding.UTF8.GetString(buffer, 0, size); size = 1024; zkfp2.GetParameters(deviceHandle, 1102, buffer, ref size); infoScanner.productName = Encoding.UTF8.GetString(buffer, 0, size); size = 1024; zkfp2.GetParameters(deviceHandle, 1103, buffer, ref size); infoScanner.serialNumber = Encoding.UTF8.GetString(buffer, 0, size); }
public override void start() { bool tuttoBene = true; statoRun = StatoRun.Stopped; infoScanner = null; try { int ret = zkfp2.Init(); if (ret == zkfperrdef.ZKFP_ERR_OK) { _giornale.Info("Inizializzato scanner ok"); } else { tuttoBene = false; _giornale.Error("err=" + ret + " : " + ZKErrors.getDescrizione(ret)); } } catch (Exception) { tuttoBene = false; String msg = "I driver dello scanner di imporonte digitali ZK Teco 4500 non sono installati."; if (Lumen.Config.Configurazione.UserConfigLumen.scannerImpronteGestito) { _giornale.Error(msg + " Impossibile avviare il servizio"); } else { _giornale.Debug(msg + " Poco male tanto non lo uso"); } return; } // Apro il device int idx = 0; if (tuttoBene) { if (IntPtr.Zero == (deviceHandle = zkfp2.OpenDevice(idx))) { tuttoBene = false; _giornale.Error("Open device " + idx + " fallita"); } else { _giornale.Info("Open device connessione ok"); } } // Inizializzo la cache if (tuttoBene) { if (IntPtr.Zero == (dbHandle = zkfp2.DBInit())) { _giornale.Error("Inizializzazione cache fallita"); tuttoBene = false; } else { _giornale.Info("Inizializzazione cache ok"); } } if (tuttoBene) { try { LeggiParametriScanner(); } catch (Exception ee) { tuttoBene = false; _giornale.Fatal("Lettura parametri scanner", ee); } } if (tuttoBene) { base.start(); } else { zkfp2.Terminate(); } }