Jump to content
Fórum Script Brasil

Off-Topic: Novas Funções Para Obter O "Status Da Impressora"


Daruma Developer

Recommended Posts

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:

http://www.desenvolvedoresdaruma.com.br/ho..._ECF_Daruma.htm

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ção rStatusImpressoraBinario_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 string StrStatus);
        [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!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...