Daruma Developer Posted September 14, 2011 Report Share Posted September 14, 2011 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_DarumaVamos 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.htmA função nos devolve:Ex:Status Binário da Impressora: 000000001100000000Vejamos 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 StatusSintaxe: [GS] [ACK]Parâmetros: NenhumResposta: 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! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.