Olá pessoal,

Hoje venho mostrar 3 novas funções da darumaframework.dll, que devolvem status sobre a impressora.

.rStatusImpressoraBinario_ECF_Daruma
.rConsultaStatusImpressoraInt_ECF_Daruma
.rConsultaStatusImpressoraStr_ECF_Daruma

Vamos ao rStatusImpressoraBinario_ECF_Daruma:
 

Este método nos permite saber o status atual do ECF, como: Modo Fiscal, Se a tampa está aberta, e até mesmo se há bobina ou não...

Mas não para por ai, está função retorna o status binário de 18 informações muito uteis em relação ao ECF.

Seu parâmetro é:
Variável:                Tam:       Descrição:

pszStatus                 18          Variável por referência que ira receber 18 dígitos.
Cada digito binário representa uma informação de status do ECF.


Consulte já a Tabela:


Help

A função nos devolve:
Ex:
Status Binário da Impressora: 000000001100000000

Vejamos na prática:
C# 
public static extern int rStatusImpressoraBinario_ECF_Daruma([MarshalAs(UnmanagedType.VBByRefStr)]

        ref string Status);

        [DllImport("DarumaFrameWork.dll")]


private
 void button1_Click(object sender, EventArgs e)

        {

            string Str_StatusBin = new string(' ', 20);

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                rStatusImpressoraBinario_ECF_Daruma(ref Str_StatusBin);

           DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                DarumaFramework_Mostrar_Retorno(DarumaFramework_DLL.


                        DarumaFramework_Declaracoes_CSharp.iRetorno);

 

            TB_Retorno.Text = "Status Binário da Impressora: " + Str_StatusBin.ToString();

        }

 

 

Delphi:

function rStatusImpressoraBinario_ECF_Daruma(pszStatus:String):Integer; StdCall; External 
'DarumaFramework.dll';

  

SetLength (iRetorno,18);

Int_Retorno := Int_Retorno := rStatusImpressoraBinario_ECF_Daruma(Str_Valor);

 





VB6:
Public Declare Function rStatusImpressoraBinario_ECF_Daruma Lib "DarumaFramework.dll"

(ByVal pszStatus As String, ByVal) As Integer

Private Sub botao_Click()

Dim Int_Status As Integer

        Int_Status = Space(18)

 iRetorno = rStatusImpressoraBinario_ECF_Daruma(Int_Status)

        MsgBox(CStr(Int_Status))


End Sub

Comunicação Direta:


Comando:
    Palavra de Status

Sintaxe:       [GS] [ACK]

Parâmetros: Nenhum

Resposta:   S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 [DDMMAA] [CR]

Nota:           Em modo Resposta Estendida, a palavra de status é acrescida de 6 dígitos, correspondentes a Data do Movimento

Viu só! Mais fácil que isto impossível... 
J 


Agora nossa segunda função: rConsultaStatusImpressoraInt_ECF_Daruma 
Esta função nos retorna 1 ou 0 indicando se o índice informado esta habilitado ou não, segue a mesma tabela da funçãorStatusImpressoraBinario_ECF_Daruma que vimos a pouco mais.

Porem você programa o índice do Status especifico que deseja obter a informação.

Seus parâmetros são:
Variável:                Tam:       Descrição:

iIndice                       2             Índice da Informação desejada             
iRetorno                    --             Variável Inteira por referência que ira receber o status 1 ou 0.

Por exemplo, se passarmos Índice: 05 a função nos devolverá 0 – que é: “Ainda não emitiu RZ hoje (com dia fiscal aberto)” ou 1 – que é: “Já emitiu RZ não pendente hoje”.

Vejamos na prática: 

C#
[DllImport("DarumaFrameWork.dll")]

        public static extern int rConsultaStatusImpressoraInt_ECF_Daruma(int iIndice, ref int IStatus);


 private void BT_botao_Click(object sender, EventArgs e)

        {

            int Int_Valor = 0;

            string Str_Indice = Microsoft.VisualBasic.Interaction.InputBox("Informe o Índice desejado:""Daruma Framework""1", posX, posY);

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                rConsultaStatusImpressoraInt_ECF_Daruma(Convert.ToInt32(Str_Indice),ref Int_Valor);

            MessageBox.Show("Status = " + Int_Valor.ToString());

        }

 Delphi:

function  rConsultaStatusImpressoraInt_ECF_Daruma(iIndice:Integer; iRetorno:Integer):

Integer; StdCall; External 'DarumaFramework.dll';

  

SetLength (iRetorno,2);

Int_Retorno := rConsultaStatusImpressoraInt_ECF_Daruma(iIndice, iRetorno);

VB6:
Public Declare Function rConsultaStatusImpressoraInt_ECF_Daruma Lib "DarumaFramework.dll"

(pszIndice As String, ByVal pszRetorno As String) As Integer

Private Sub BT_Botao_Click()

 Dim Str_Indice, Str_Retorno  As String

       

        Str_Indice = TB_Indice.Text

             

        Str_Indice = Space(2)

        iRetorno = rConsultaStatusImpressoraInt_ECF_Daruma(Str_Indice, Str_Retorno)

        MsgBox (Str_Retorno)

End Sub

Comunicação Direta:


Comando:
    Palavra de Status

Sintaxe:    [GS] [ACK]

Parâmetros: Nenhum

Resposta:   S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 [DDMMAA] [CR]

Nota: Em modo Resposta Estendida, a palavra de status é acrescida de 6 dígitos, correspondentes a Data do Movimento.

Temos também a opção de passar o Índice e Obtermos a informação em texto do status da impressora referente ao índice informado. 

Com nossa ultima função de hoje que é: rConsultaStatusImpressoraStr_ECF_Daruma. 

Seus parâmetros são:
Variável:                Tam:       Descrição:

iIndice                       2             Índice da Informação desejada             
szStatus                    --            Variável String por referência que retorna o Status do Índice informado.

Vejamos na prática:

C#
[DllImport("DarumaFrameWork.dll")]

        public static extern int rConsultaStatusImpressoraStr_ECF_Daruma(int iIndice,


[MarshalAs(UnmanagedType.VBByRefStr)] ref stringStrStatus);

        [DllImport("DarumaFrameWork.dll")]

private void métodoRConsultaStatusImpressoraStrECFDarumaToolStripMenuItem_Click(object sender, EventArgs e)

        {

            string Str_Valor = new string(' ', 60);

            string Str_Indice = Microsoft.VisualBasic.Interaction.InputBox("Informe o Índice desejado:""Daruma Framework""1");

           

            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno =

DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.

                rConsultaStatusImpressoraStr_ECF_Daruma(Convert.ToInt32(Str_Indice),ref Str_Valor);

           

            MessageBox.Show("Status = " + Str_Valor);

        }

 


Delphi:
function  rConsultaStatusImpressoraStr_ECF_Daruma(iIndice:Integer; szStatus:String): Integer; StdCall;


External 'DarumaFramework.dll';

  

SetLength (Str_Informacao,150);

Int_Retorno := rConsultaStatusImpressoraStr_ECF_Daruma(1, Str_Informacao);

 

VB6:
Public Declare Function rConsultaStatusImpressoraStr_ECF_Daruma Lib "DarumaFramework.dll"


(pszIndice As String, ByVal pszRetorno As String) As Integer

Private Sub BT_Botao_Click()

 Dim Str_Indice, Str_Retorno  As String

       

        Str_Indice = TB_Indice.Text

             

        Str_Indice = Space(2)

        iRetorno = rConsultaStatusImpressoraStr_ECF_Daruma(Str_Indice, Str_Retorno)

        MsgBox (Str_Retorno)

End Sub 

 

 

Comunicação Direta:


Comando:
    Palavra de Status

Sintaxe:    [GS] [ACK]

Parâmetros: Nenhum

Resposta:   S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 [DDMMAA] [CR]

Nota:       Em modo Resposta Estendida, a palavra de status é acrescida de 6 dígitos, correspondentes a Data do Movimento.

 

Ai vai mais uma dica para facilitar seu desenvolvimento!

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