Olá pessoal,

No escovando Bits de hoje veremos como comunicar com 2 produtos da Daruma utilizando a darumaframework.dll na mesma aplicação.

Como isto é possível, sendo que o programa trabalha comunicando com a porta serial e os dispositivos estão em portas distintas?
É isto mesmo! E ainda utilizando uma única darumaframework.dll, e sem ter que fazer aquela "gambiarra" de utilizar duas dll iguais com nomes diferentes uma da outra.

Isto é possível por causa do método eDefinirProduto_Daruma.

Este método nos permite identificar em qual produto a DarumaFramework.dll será capaz de trabalhar, alternando assim a capacidade da DarumaFramework.dll de localizar com precisão o produto a ser utilizado e trabalhar com o mesmo.

Digamos que existam dois dispositivos comunicando, conectados e reconhecidos no Gerenciador de Dispositivos como portas.

Segue abaixo:
Tenho uma impressora Não-Fiscal(DR700M) conectada na porta COM2 conforme a imagem acima, e uma Impressora Fiscal(FS700 MACH2) conectada na COM1. Ambas Impressoras estão a 115200 bits por segundo.
Agora vamos ver na prática a utilização do eDefinirProduto_Daruma:
C#:

[DllImport("DarumaFrameWork.dll")]
        public static extern int eDefinirProduto_Daruma(System.String sProduto);

  private void Button1_Click(object sender, EventArgs e)
        {
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.eBuscarPortaVelocidade_ECF_Daruma();
        
DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.eDefinirProduto_Daruma("ECF");

         DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iLeituraX_ECF_Daruma();
}
  private void BT_Enviar_Click(object sender, EventArgs e)
        {

DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.eDefinirProduto_Daruma("DUAL");

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iImprimirTexto_DUAL_DarumaFramework("<b> Teste de impressão Daruma </b>”, 0);

}

VB6:

Public Declare Function eDefinirProduto_Daruma Lib "DarumaFramework.dll" (ByVal sProduto As String) As Integer

Private Sub LeituraX_Daruma_Click()
iRetorno = eDefinirProduto_Daruma("ECF")
iRetorno = eBuscarPortaVelocidade_ECF()

iRetorno = iLeituraX_ECF_Daruma
End Sub

Private Sub Enviar_Click()

iRetorno = eDefinirProduto_Daruma("DUAL")

  iRetorno = iImprimirTexto_DUAL_DarumaFramework(“<b>Teste de Impressão</b>", 0)

End Sub

Delphi:

procedure Fiscal_Teste.BT_MenuTesteClick(Sender: TObject);

var
iRetorno : Integer;

begin

iRetorno := eDefinirProduto_Daruma('ECF');
Int_Retorno := eBuscarPortaVelocidade_ECF_Daruma();

Int_Retorno:= iLeituraX_ECF_Daruma();

end;

procedure TFR_DUAL_iImprimirTexto_DUAL_DarumaFramework.BT_EnviarClick(Sender: TObject);

var
  iRetorno: Integer;
begin
  iRetorno := eDefinirProduto_Daruma('DUAL');
 
   iRetorno := iImprimirTexto_DUAL_DarumaFramework(‘<b>Teste de Impressão</b>’, 0);

end;

Viu só como é fácil?

E isto é válido tanto na alternação de qualquer tipo de produto que a darumaframework.dll trabalhe (Impressora Fiscal, Impressora Não-Fiscal, Modem, TA2000).

Agora é só implementar!

Um abraço e até a próxima!


Skypes:
ddc_suporte_daruma
suporte_ddc_daruma
desenvolvedores_suporte_daruma
suporte_desenvolvedores_daruma
desenvolvedores_daruma
suporte_daruma
suporte_alexandre_daruma
claudenir_andrade