Hoje venho falar para vocês sobre Observer2, que é uma ferramenta que facilita muito a vida dos desenvolvedores, e que seu uso pode proporcionar um desenvolvimento mais rápido em plataformas diversas.

Observer2 é um driver da Daruma voltado para as linguagens DOS/ 16 bits ou Linguagens que não conseguem chamar a DarumaFramework.dll diretamente. Podemos dizer que o Observer2 é como se fosse uma “ponte” de comunicação entre sua aplicação e a DarumaFramework.dll.

O Observer2 trabalha com a troca de arquivos que circulam pela sua pasta, e como o próprio nome diz, o mesmo é um Observador desta pasta.

É muito tranquilo criar um arquivo.cmd e salvar em um diretório, por isso o Observer2 se tornou principalmente para os programadores 1bits, uma ferramenta muito pratica e útil.

Por default o arquivo para o envio de comandos para a pasta mapeada, chama-se Daruma.cmd e o arquivo para recebimento de resposta é Daruma.ret, ambos também por default são escritos no diretório raiz C:\, porem os diretórios e os nomes dos arquivos mapeados é algo configurável.

Lembrando que o Observer2 deve ser minimizado e constar na barra de tarefas em perfeita execução para que possa mapear a pasta do arquivo de entrada!

img

Vamos ver na prática como o Observer2 funciona:

Criação do Daruma.cmd

private void button1_Click(object sender, EventArgs e)
  {
    string nome_arquivo = "C:/Daruma.tmp";
    string nome_arquivo2 = "C:/Daruma.cmd";
    //Criei 2 variáveis uma com nome temporário, e outra para for atribuir para o .cmd
 
if (!System.IO.File.Exists(nome_arquivo))
  System.IO.File.Create(nome_arquivo).Close();
//verifico se já existe algum arquivo com este nome criado 

System.IO.TextWriter arquivo = System.IO.File.AppendText(nome_arquivo);
arquivo.WriteLine("1072;");

//abro o arquivo tmp e em seguida insiro o comando da Leitura X.
arquivo.Close();

//fecho o arquivo 

System.IO.File.Copy(nome_arquivo, nome_arquivo2);
 // transformo o arquivo tmp, e um arquivo .cmd


System.IO.File.Delete(nome_arquivo);
System.IO.File.Delete(nome_arquivo);
            //Deleto o arquivo temporário

   }
     }
       }   

Leitura dos retornos (Daruma.ret)

private void button1_Click(object sender, EventArgs e)
      {
          string nome_arquivo = "C:/Daruma.ret";
	//Criei o uma veriavel amazenando o nome do arquivo
          System.IO.StreamReader arquivo = new System.IO.StreamReader(nome_arquivo);

          string linha = "";
               
   while (true)
   {
      linha = arquivo.ReadLine();
      if (linha != null)
      {
        string[] DadosColetados = linha.Split(';');
        GridView1.DataSource = DadosColetados;
      }
      else
        break;
     }
//Nos trecho acima fiz a leitura do daruma.ret que foi criado pelo observer2 e joguei em uma caixa de lista.      
    
  }
}

}

Viram como é simples, foi só criar o Daruma.cmd e salvar no diretório mapeado pelo Observer2, e pronto.

Exemplo de um Daruma.cmd que emitirá um cupom fiscal:

  • 1002; Abre Cupom(Padrão)
  • 1005;N1;250;78960037045;Bolacha; Vende Item
  • 1005;N1;250;78960037045;Bolacha; Vende Item
  • 1005;N1;250;78960037045;Bolacha; Vende Item
  • 1017; Totalizar (Padrão)
  • 1022; Efetuar Forma Pgto (Padrão)
  • 1025; Encerrar Cupom (Padrão)

O Observer2 utiliza a darumaframework.dll para se comunicar com o ECF, Impressora DUAL, TA2000, e o Modem.

É isto ai! Ela trabalha também com os demais produtos, para testarmos e termos como base os comandos podemos utilizar o “Testar Observer” que é uma aba no próprio aplicativo do Observer como abaixo.

img

O Observer2 por trabalhar com a camada darumaframework.dll e utiliza também o darumaframework.xml que é o registro onde a dll busca informações operacionais, como por exemplo: Velocidade, Porta, Arredondar/Truncar.