Ir para conteúdo
Fórum Script Brasil

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


Daruma Developer

Posts Recomendados

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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...