busca_1 Atendimento   (11) 3681-1177   busca_3 busca_4
Logo Centro de Treinamento especializado em Ruby e Ruby on Rails rubyonrails

Pdf

Acessando DLL'S no ruby (exemplo com ECF)

Ruby realmente é mais do que simplesmente programar para a web !
Eu mesmo somente decidi migrar todos os aplicativos da Object Data para Ruby em razão da linguagem ser de aplicação geral.
Nesse artigo mostrarei como acessar bibliotecas ".dll" e ".so" através da DL, biblioteca da Standard API.
Mostraremos como criar um ".so" no linux e no windows acessar um Emissor de Cupom Fiscal - ECF.
 Conhecendo as API's de acesso a DLL
Incialmente devemos compreender que o acesso a DLL'S em Ruby é feito através de duas API's. A primeira é a Win32API e a segunda é a DL.
A primeira como o próprio nome diz é usada exclusivamente em ambiente Windows, já a segunda é multi-plataforma. A única diferença, nesse último caso, é que em Windows a extensão ficará ".dll" e em Linux e outros Unix ".so".
Ambas fazem parte da Standard API e podem ser acessadas no site ruby-doc.org.
Web_publicador_paragrafo159
Neste artigo iremos utilizar a DL por ser multi-plataforma.
Inicialmente, vamos criar nossa biblioteca em C chamada hellolib.c
 nosso código em C

#include <stdio.h>

int imprimir()
{
return printf("hello world ! \n");
}

int somar(int a, int b)
{
return a + b;
}
 Compilando nossa ".so"
gcc hellolib.c -shared -o hellolib.so
 Acessando através do ruby:
irb
irb(main):001:0> require 'dl'
=> true
irb(main):002:0>handle = DL.dlopen('./hellolib.so')
=> #<DL::Handle:0xb7ef1ad4>
irb(main):003:0> result, params = handle['somar', 'III'].call(3, 5)
=> [8, [3, 5]]
irb(main):004:0> result
=> 8
irb(main):005:0> params
=> [3, 5]


Onde 'III' é o retorno mais os parâmetros da dll. Nesse caso se espera um inteiro de retorno e são passados dois inteiros como argumento.

irb(main):006:0> result, params = handle['imprimir', 'I'].call
hello world !
=> [15, []]


Agora temos uma impressão no prompt e apenas um 'I' indicando que o valor de retorno deve ser um inteiro.
 Efetuando uma leitura X de um 'ECF'
Utilizando DL agora no windows, podemos imprimir uma leitura x de uma impressora fiscal.

Nessa caso estarei usando uma impressora fiscal Elgin veja:
Primeira_offAnterior_off 1 2 Proxima_onUltima_on
Object Training
Rua Carlos da Costa Ramalho Junior, 201
Próximo as estações Osasco e Pres. Altino do Trem.
COPYRIGHT