Fórum [Escovando Bits] Multiplos Produtos com DarumaFramework #443452

20/05/2013

0

Acesse: [url]http://www.desenvolvedoresdaruma.com.br/dde/htmls/dde038_2013-multiplos-produtos.html[/url]


A Daruma possui um driver que se comunica com diversos produtos, chamado DarumaFramework. Este driver se comunica com ECF, Impressora não fiscal, modem, display, Micro Terminal e agora vai se comunicar com o S@T também. Para quem trabalha com apenas um produto, é bem simples, porém existem parceiros que usam vários produtos e o controle de uso dos produtos ficava mais trabalhoso. Um escovador de bits nos deu o feedback de fazer com que a DarumaFramework trabalhe com diversos produtos simultaneamente, de forma que a aplicação não precise ficar se preocupando em definir o produto que será usado no momento. Nós implementamos e somos gratos a Comunidade de Desenvolvedores Daruma por nos dar feedbacks.

Esta implementação só foi possível graças a forma com que a DarumaFramework foi construída, contendo o produto usado na nomenclatura do método. Foi por este motivo que nós conseguimos entregar a vocês, escovadores de bits, este recurso, esta comodidade para seu desenvolvimento.
Então escovadores de bits, o motivo deste escovando é mostrar uma forma alternativa de usar múltiplos produtos com a DarumaFramework.
Maneira convencional de se usar múltiplos produtos:
Nesta etapa vamos apenas lembrar como é o uso de múltiplos produtos com a DarumaFramework, na forma mais comum e mais usada pelos desenvolvedores. Acompanhem:

Usaremos uma impressora fiscal, uma impressora não fiscal e um modem conectados no computador.
No sistema de testes, mostrado abaixo, vamos imprimir um cupom fiscal, em seguida um pequeno texto na impressora não fiscal e depois enviar um sms para o cliente.
Vejam como ficaria isso em Delphi, C# e VB6:

Delphi
//Declaração Geral

function eDefinirProduto_Daruma(szProduto: String): Integer; StdCall; External 'DarumaFrameWork.dll'
//Declarações Fiscais

function iCFAbrirPadrao_ECF_Daruma: Integer; StdCall; External 'DarumaFramework.dll';
function iCFVenderResumido_ECF_Daruma(pszCargaTributaria:String; pszPrecoUnitario:String; pszCodigoItem:String; pszDescricaoItem:String): Integer; StdCall; External 'DarumaFramework.dll';
function iCFTotalizarCupomPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
function iCFEfetuarPagamentoPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
function iCFEncerrarPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
//Declaração Não Fiscal

function iImprimirTexto_DUAL_DarumaFramework(stTexto: String; iTam: Integer ): Integer; StdCall; External 'DarumaFramework.dll'
//Declaração Modem

[DllImport("DarumaFrameWork.dll")]
public static extern int tEnviarSms_MODEM_DarumaFramework(System.String sNumeroTelefone, System.String sMensagem);
//Chamada de Métodos

iRetorno := eDefinirProduto_Daruma('ECF');
iRetorno := iCFAbrirPadrao_ECF_Daruma();
iRetorno := iCFVenderResumido_ECF_Daruma(‘FF’, ’10,00’, ‘00099991’, ‘Tomate’);
iRetorno := iCFTotalizarCupomPadrao_ECF_Daruma();
iRetorno := iCFEfetuarPagamentoPadrao_ECF_Daruma();
iRetorno := iCFEncerrarPadrao_ECF_Daruma();
iRetorno := eDefinirProduto_Daruma('DUAL');
iRetorno := iImprimirTexto_DUAL_Daruma('Obrigado e volte sempre!', 0);
iRetorno := eDefinirProduto_Daruma(‘MODEM’);
iRetorno := tEnviarSms_MODEM_Daruma(‘01297424797’, ‘Obrigado e volte sempre!’);
C#
//Declaração Geral

[DllImport("DarumaFrameWork.dll")]
public static extern int eDefinirProduto_Daruma(string sProduto);
//Declarações Fiscais

[DllImport("DarumaFrameWork.dll")]
public static extern int iCFAbrirPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFVenderResumido_ECF_Daruma(string pszCargaTributaria, string pszPrecoUnitario, string pszCodigoItem, string pszDescricaoItem);
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFTotalizarCupomPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFEfetuarPagamentoPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFEncerrarPadrao_ECF_Daruma();
//Declaração Não Fiscal

[DllImport("DarumaFrameWork.dll")]
public static extern int iImprimirTexto_DUAL_DarumaFramework(string stTexto, int iTam);
//Declaração Modem

function tEnviarSms_MODEM_DarumaFramework(Str_Numero:string; Str_Msg:string): Integer; StdCall; External 'DarumaFrameWork.dll'

//Chamada de Métodos

iRetorno = eDefinirProduto_Daruma(“ECF”);
iRetorno = iCFAbrirPadrao_ECF_Daruma();
iRetorno = iCFVenderResumido_ECF_Daruma(“FF”, “10,00”, “00099991”, “Tomate”);
iRetorno = iCFTotalizarCupomPadrao_ECF_Daruma();
iRetorno = iCFEfetuarPagamentoPadrao_ECF_Daruma();
iRetorno = iCFEncerrarPadrao_ECF_Daruma();
iRetorno = eDefinirProduto_Daruma(“DUAL”);
iRetorno = iImprimirTexto_DUAL_Daruma(“Obrigado e volte sempre!”, 0);
iRetorno = eDefinirProduto_Daruma(“MODEM”);
iRetorno = tEnviarSms_MODEM_Daruma(“01297424797”, “Obrigado e volte sempre!”);
Visual Basic 6
//Declaração Geral

Public Declare Function eDefinirProduto_Daruma Lib "DarumaFrameWork.dll" (ByVal sProduto As String) As Integer
//Declarações Fiscais

Public Declare Function iCFAbrirPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFVenderResumido_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal Aliq As String, ByVal PrecoUn As String, ByVal CodItem As String, ByVal DescricaoItem As String) As Integer
Public Declare Function iCFTotalizarCupomPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFEfetuarPagamentoPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFEncerrarPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
//Declaração Não Fiscal

Public Declare Function iImprimirTexto_DUAL_DarumaFramework Lib "DarumaFrameWork.dll" (ByVal stTexto As String, ByVal iTam As Integer) As Integer
//Declaração Modem

Public Declare Function tEnviarSms_MODEM_DarumaFramework Lib "DarumaFrameWork.dll" (ByVal sNumeroTelefone As String, ByVal sMensagem As String) As Integer
//Chamada de Métodos

iRetorno = eDefinirProduto_Daruma(“ECF”)
iRetorno = iCFAbrirPadrao_ECF_Daruma()
iRetorno = iCFVenderResumido_ECF_Daruma(“FF”, “10,00”, “00099991”, “Tomate”)
iRetorno = iCFTotalizarCupomPadrao_ECF_Daruma()
iRetorno = iCFEfetuarPagamentoPadrao_ECF_Daruma()
iRetorno = iCFEncerrarPadrao_ECF_Daruma()
iRetorno = eDefinirProduto_Daruma(“DUAL”)
iRetorno = iImprimirTexto_DUAL_Daruma(“Obrigado e volte sempre!”, 0)
iRetorno = eDefinirProduto_Daruma(“MODEM”)
iRetorno = tEnviarSms_MODEM_Daruma(“01297424797”, “Obrigado e volte sempre!”)
Acima, foi mostrada a maneira mais utilizada, mais comum, de se trabalhar com vários produtos na DarumaFramework.
Maneira alternativa de usar múltiplos produtos:
Agora vamos ver uma maneira alternativa de usar múltiplos produtos com a DarumaFramework.
O cenário não mudou. Vamos usar uma impressora fiscal, uma impressora não fiscal e um modem conectados no computador.
No sistema de testes mostrado abaixo, vamos imprimir um cupom fiscal, em seguida um pequeno texto na impressora não fiscal e depois enviar um sms para o cliente.

Vejam como ficaria isso em Delphi, C# e VB6:

Delphi
//Declarações Fiscais

function iCFAbrirPadrao_ECF_Daruma: Integer; StdCall; External 'DarumaFramework.dll';
function iCFVenderResumido_ECF_Daruma(pszCargaTributaria:String; pszPrecoUnitario:String; pszCodigoItem:String; pszDescricaoItem:String): Integer; StdCall; External 'DarumaFramework.dll';
function iCFTotalizarCupomPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
function iCFEfetuarPagamentoPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
function iCFEncerrarPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
//Declaração Não Fiscal

function iImprimirTexto_DUAL_DarumaFramework(stTexto: String; iTam: Integer ): Integer; StdCall; External 'DarumaFramework.dll'
//Declaração Modem

[DllImport("DarumaFrameWork.dll")]
public static extern int tEnviarSms_MODEM_DarumaFramework(System.String sNumeroTelefone, System.String sMensagem);
//Chamada de Métodos

iRetorno := iCFAbrirPadrao_ECF_Daruma();
iRetorno := iCFVenderResumido_ECF_Daruma(‘FF’, ’10,00’, ‘00099991’, ‘Tomate’);
iRetorno := iCFTotalizarCupomPadrao_ECF_Daruma();
iRetorno := iCFEfetuarPagamentoPadrao_ECF_Daruma();
iRetorno := iCFEncerrarPadrao_ECF_Daruma();
iRetorno := iImprimirTexto_DUAL_Daruma('Obrigado e volte sempre!', 0);
iRetorno := tEnviarSms_MODEM_Daruma(‘01297424797’, ‘Obrigado e volte sempre!’);
C#
//Declarações Fiscais

[DllImport("DarumaFrameWork.dll")]
public static extern int iCFAbrirPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFVenderResumido_ECF_Daruma(string pszCargaTributaria, string pszPrecoUnitario, string pszCodigoItem, string pszDescricaoItem);
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFTotalizarCupomPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFEfetuarPagamentoPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFEncerrarPadrao_ECF_Daruma();
//Declaração Não Fiscal

[DllImport("DarumaFrameWork.dll")]
public static extern int iImprimirTexto_DUAL_DarumaFramework(string stTexto, int iTam);
//Declaração Modem

function tEnviarSms_MODEM_DarumaFramework(Str_Numero:string; Str_Msg:string): Integer; StdCall; External 'DarumaFrameWork.dll'

//Chamada de Métodos

iRetorno = iCFAbrirPadrao_ECF_Daruma();
iRetorno = iCFVenderResumido_ECF_Daruma(“FF”, “10,00”, “00099991”, “Tomate”);
iRetorno = iCFTotalizarCupomPadrao_ECF_Daruma();
iRetorno = iCFEfetuarPagamentoPadrao_ECF_Daruma();
iRetorno = iCFEncerrarPadrao_ECF_Daruma();
iRetorno = iImprimirTexto_DUAL_Daruma(“Obrigado e volte sempre!”, 0);
iRetorno = tEnviarSms_MODEM_Daruma(“01297424797”, “Obrigado e volte sempre!”);
Visual Basic 6
//Declarações Fiscais

Public Declare Function iCFAbrirPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFVenderResumido_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal Aliq As String, ByVal PrecoUn As String, ByVal CodItem As String, ByVal DescricaoItem As String) As Integer
Public Declare Function iCFTotalizarCupomPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFEfetuarPagamentoPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFEncerrarPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
//Declaração Não Fiscal

Public Declare Function iImprimirTexto_DUAL_DarumaFramework Lib "DarumaFrameWork.dll" (ByVal stTexto As String, ByVal iTam As Integer) As Integer
//Declaração Modem

Public Declare Function tEnviarSms_MODEM_DarumaFramework Lib "DarumaFrameWork.dll" (ByVal sNumeroTelefone As String, ByVal sMensagem As String) As Integer
//Chamada de Métodos

iRetorno = iCFAbrirPadrao_ECF_Daruma()
iRetorno = iCFVenderResumido_ECF_Daruma(“FF”, “10,00”, “00099991”, “Tomate”)
iRetorno = iCFTotalizarCupomPadrao_ECF_Daruma()
iRetorno = iCFEfetuarPagamentoPadrao_ECF_Daruma()
iRetorno = iCFEncerrarPadrao_ECF_Daruma()
iRetorno = iImprimirTexto_DUAL_Daruma(“Obrigado e volte sempre!”, 0)
iRetorno = tEnviarSms_MODEM_Daruma(“01297424797”, “Obrigado e volte sempre!”)
Ai está a maneira alternativa de usar múltiplos produtos com a DarumaFramework. É importante lembrar que sua aplicação vai rodar com ambos códigos e que este feature foi passado por um parceiro da comunidade de desenvolvedores Daruma.
Daruma Developer

Daruma Developer

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar