jueves, 18 de octubre de 2012

Utilizar Scanner desde C# con WIA


Bueno, me di a la tarea de buscar como adquirir imágenes desde un Scanner por un requerimiento para realizar una aplicación para un cliente, después de mucho buscar y de ver varios ejemplos encontré como realizar lo  Windows Incluye desde XP una forma de hacerlo por medio de un SDK y desde Vista y 7 ya viene con el sistema operativo mas información en :http://msdn.microsoft.com/en-us/library/windows/desktop/ms630368(v=vs.85).aspx

Para no hacerles el cuento largo la forma de hacerlo o cuando menos la que yo ejecute compile y corrí desde Windows 7 con un miltifuncional Epson es la siguiente:

  1. Importar al proyecto las librerias "Microsoft Windows Image Acquisition Libray v2.0" (WIA) de la seccion COM.
  2. Después cree una clase como se muestra a continuación:
      1. using System;
      2. using WIA;
      3. public class Scanner
      4. {
      5.          Device oDevice;
      6.          CommonDialog dlg;
      7.          public Scanner()
      8.          {
      9.                   dlg = new CommonDialog();
      10.                   oDevice = dlg.ShowSelectDevice(WiaDeviceType.ScannerDeviceType, true, false);
      11.          }
      12.          public System.Drawing.Image Scann()
      13.          {
      14.                   ImageFile imageFile=dlg.ShowAcquireImage(oDevice.Type,        
      15.                            WiaImageIntent.GrayscaleIntent,
      16.                            WiaImageBias.MinimizeSize,
      17.                            "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}", false, false, false);
      18.                   WIA.Vector vector = imageFile.FileData;
      19.                   System.Drawing.Image i = System.Drawing.Image.FromStream(new
      20.                            System.IO.MemoryStream((byte[])vector.get_BinaryData()));
      21.                   return i;
      22.          }
      23. }
  3. Como se ve en el objetio principal es ShowAcquireImage() cuya descripcion esta completa se puede ver en: http://msdn.microsoft.com/en-us/library/windows/desktop/ms630772(v=vs.85).aspx, la cadena de caracteres extraños son los ID del tipo de codificacion de la Imagen los cuales se puede ver en la siguiente pagina:http://msdn.microsoft.com/en-us/library/windows/desktop/ms630810(v=vs.85).aspx
  4. Despues de la clase es muy sencillo solo se instancia el objeto y se llama la Funcion Scann() que es la que inicializa todo lo de la clase y regresa una elemento de tipo System.Drawing.Image 
      1. Scanner oScanner = new Scanner();
      2. pictureBox1.Image = oScanner.Scann();
Bueno se los dejo ya muy sencillo solo crear la clase y mandar llamar la funcion Scann(), espero que les sea util
Saludos...

miércoles, 3 de octubre de 2012

Servicios de direccionamiento dinamico

Alguna vez han tenido la necesidad de publicar un trabajo, proyecto o prototipo en internet ?, y al intentarlo se dan cuenta de que desde su casa con una conexión de infernitum o de cualcuier ISP tu ip no es fija... y que pedir a personal de su ISP una IP fija sale de su presupuesto... la solución es un servicio de direccionamiento dinámico... hay varios gratuitos que son baste útiles son gratuitos; de estos el que yo eh usado pro años es el servicio de  http://www.no-ip.com/ es muy fácil basta con registrarse, abrir en la pagina la opción Hosts/Redirects, agregar un host, buscar en dominio deseamos que se cree el sub dominio de nuestro re-direccionamiento  y dar clic en crear host



descargamos la aplicación en la opcion Download Client que es la encargada de estar refrescando nuestra IP variable al servicio de DNS la instalamos e iniciamos la session creada en la web


Elejimos el DNS creado 




 y Listo... podemos accesar a nuestro equipo desde un dominio como : patos.no-ip.org; también si se desea se puede usar un dominio propietario pero me parece que eso si ya tiene un costo...