Lector y Generador de Códigos QR para PowerBuilder

 

Introducción:

Hace tiempo que estoy buscando como leer y escribir códigos de barras en mis aplicaciones PowerBuilder sin tener que recurrir a SDK's de Pago.

Siempre había oído hablar de una librería Open Source llamada Zxing pero hasta ahora no había podido hacerla funcionar en PowerBuilder.

Siguiendo el ejemplo que se publicó en el canal de YouTube de Dora Sistemas, hoy traigo un nuevo ejemplo de lector de Código de Barras. 

Empezamos:

He creado con Visual Studio una librería NetCore que es fácilmente importable en PowerBuilder desde la versión 2019 con la nueva opción .NET DLL Importer.



La diferencia de este ejemplo respecto a lo que se publicó en YouTube es que incorporo la capacidad de leer los código de barras generados.

Básicamente la librería que he creado en CSharp contiene 2 métodos, uno para lectura (of_readbarcode ) y otro para la generación (of_barcodegenerate).

Hay que decir que ambos métodos no sólo sirven para generar código Qr, si no que admiten una amplia variedad de formatos, pero para este ejemplo me he centrado en los códigos Qr.

Para usar la librería en PowerBuilder, después de importarla, he pensado en crear otra Clase No visual, por si hago modificaciones en mi proyecto de CSharp poder importar la dll sin miedo a perder algún cambio o adaptación.

En fin no me enrollo mas, que para ser mi primera entrada y el último día del año no esta mal....

He creado un video demo en Youtube: 

https://youtu.be/rmw8BaNovJE

06-12-2022: Proyecto descrito en articulo archivado. Nueva versión en repositorio con librería en .Net6 y PowerBuilder 2022 build 1892.

Os dejo el enlace de proyecto actual en GitHub:

github.com/rasanfe/qrcode

Y proyecto en Visual Studio 2022:

github.com/rasanfe/ZxingBarcode

Para los que necesiten versiones anteriores como la descrita en este artículo:

Proyecto PowerBuilder 11.5 Build 2506

Proyecto PowerBuilder 12.6 build 3506

Proyecto Visual Studio 2022 NetCore 3.1 COM/ActiveX

Proyecto PowerBuilder 2019 build 2779

Proyecto PowerBuilder 2021 build 1509

Proyecto Visual Studio 2022 NetCore 3.1









Comentarios

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Hola Félix, yo quiero ir un paso más allá y buscar dentro de nuget una dll para generar códigos de qr en este ejemplo, pero se abriría un mundo a cualquier dll. Hasta ahora yo había utilizado snapdevelop para importar el paquete correspondiente, modificar el código c# y después generar la dll e importarla en mi proyecto. Estoy investigando como evitar ese paso y simplemente descargarme la dll de nuget, realizar .NET DLL Importer y a partir de ahí escribir el código PB correspondiente para generar el QR. ¿crees que esto es posible?. Este es el código que estoy utilizando, pero me retorna null.
    PUBLIC:
    String is_assemblypath = "C:\pruebas\Desktop\QRCoder.dll"
    String is_classname = "QRCoder.QRCodeGenerator"

    nvo_qrcodegenerator qrgenerator

    qrgenerator = create nvo_qrcodegenerator

    long ll_status
    any qr
    DotNetAssembly lnv_assembly
    lnv_assembly = Create DotNetAssembly
    ll_status = lnv_assembly.LoadWithDotNetFramework(qrgenerator.is_assemblypath )
    ll_status = lnv_assembly.CreateInstance(qrgenerator.is_classname, qrgenerator)

    qr = qrgenerator.CreateQrCode("Texto a incluir en el QR", 1)
    // la función devuelve null

    destroy qrgenerator
    destroy lnv_assembly

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola Javier, mi nombre es Ramón, disculpa no haber contestado antes, pero lo he visto hoy tu comentario....
      En mi opinión lo que quieres hacer no se puede, tienes que crear la biblioteca de clases con Snapdevelop o Visual Studio y luego importar.
      Siento no ser de mas ayuda, un saludo.

      Eliminar

Publicar un comentario