El siguiente ejemplo está dedicado a mi compañero Raul Vizcaino … No pierdas nunca las ganas de seguir aprendiendo… Lo prometido es deuda , y aquí lo tienes.
Aprovechando la libreria BarcodeLib vamos a crear un objeto .net para instanciarlo y listo
Podemos hacer el siguiente ejemplo en un proyecto en Visual Studio , donde es mucho mas cómodo , pero tambien podemos hacerlo así.
Crea un directorio , donde para el siguiente ejemplo está la libreria BarcodeLib.dll. Copia el siguiente código en un notepad y guardalo con el nombre PHSPictureBox.cs , notese que lo importante es la extensión del archivo *.cs
using System;
using System.Drawing;
using System.Windows.Forms;
using BarcodeLib;
namespace PHSPictureBox
{
public partial class PHSPictureBox : PictureBox
{
private string _BarCode;
private string _MessageError;
private string _CodeType;
private BarcodeLib.TYPE UserType = BarcodeLib.TYPE.UPCA;
public string BarCode
{
get
{
return _BarCode;
}
set
{
_BarCode = value;
LoadMyBarcode(_BarCode);
}
}
public string CodeType
{
get
{
return _CodeType;
}
set
{
_CodeType = value;
GetMyCode(_CodeType);
if (! String.IsNullOrEmpty(BarCode) )
{
LoadMyBarcode(BarCode);
}
}
}
public string MessageError
{
get
{
return _MessageError;
}
set
{
_MessageError = value;
}
}
public PHSPictureBox()
{
this.BackColor = System.Drawing.Color.White;
this.MaximumSize = new System.Drawing.Size(1900, 1060);
this.MinimumSize = new System.Drawing.Size(50, 25);
this.Name = "PHSPictureBox";
this.Size = new System.Drawing.Size(203, 84);
}
private void GetMyCode(String Type)
{
if (String.IsNullOrEmpty(CodeType))
{
UserType = BarcodeLib.TYPE.UPCA;
}
else
{
/*
Code 128 Code 93 Code 39 (Extended / Full ASCII)
Code11 EAN-8 FIM (Facing Identification Mark)
UPC-A UPC-E Pharmacode
MSI PostNet Standard 2 of 5
ISBN Codabar Interleaved 2 of 5
ITF-14 Telepen UPC Supplemental 2
JAN-13 EAN-13 UPC Supplemental 5
*/
switch (Type)
{
case "CODE128":
UserType = BarcodeLib.TYPE.CODE128;
break;
case "CODE11":
UserType = BarcodeLib.TYPE.CODE11;
break;
case "UPCA":
UserType = BarcodeLib.TYPE.UPCA;
break;
case "MSI":
UserType = BarcodeLib.TYPE.MSI_Mod11_Mod10;
break;
case "ISBN":
UserType = BarcodeLib.TYPE.ISBN;
break;
case "ITF14":
UserType = BarcodeLib.TYPE.ITF14;
break;
case "JAN13":
UserType = BarcodeLib.TYPE.JAN13;
break;
default:
UserType = BarcodeLib.TYPE.UPCA;
break;
}
}
}
public void LoadMyBarcode(string Code)
{
MessageError = "";
try
{
BarcodeLib.Barcode b = new BarcodeLib.Barcode();
b.IncludeLabel = true;
this.Image = b.Encode(UserType, Code, Color.Black, Color.White, this.Width, this.Height);
}
catch(Exception ex)
{
MessageError = ex.ToString();
}
}
}
}
Siguiente , ejecutar la consola de Windows como administrador y ejecuta el siguiente comando. Doy por hecho que el net framework v4.0 está instalado
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc /t:library /out:PHSPictureBox.dll /r:System.dll;System.Drawing.dll;System.Windows.Forms.dll;BarcodeLib.dll PHSPictureBox.cs
Si todo es correcto, se habrá generado la *.dll correspondiente.
Ahora ya puedes utilizarlo en tu SCADA , ya sea AVEVA Intouch, WinCC , Factory Talk View , IFIX etc… siempre y cuando soporte controles .Net
Te dejo aquí un pequeño ejemplo de como implementarlo en AVEVA Intouch Client Controls