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
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!