public FlagErroComando execute(String ip, String porta, String cpf, String hash, ref LogManager logManager)
        {
            FlagErroComando flagErroComando = new FlagErroComando();
            Tcp             tcp             = null;

            try
            {
                tcp = new Tcp(ip, Convert.ToInt32(porta));
            }
            catch {
                flagErroComando.setErro(FlagErroComando.COMUNICACAO_NAO_ESTABELECIDA);
                return(flagErroComando);
            }

            byte[] buffer = criarPacoteCabecalho(CodigosComandos.START_PC, CodigosComandos.ENVIAR_DATA_HORA,
                                                 ProtocoloUtils.data(), ProtocoloUtils.horario(), Conversor.cpfToByte(cpf), (byte)0x00, CodigosComandos.END);

            //0A 00 00 00 00 91 00 18 B7 E1 00 36 04 0F 00 02 96 46 19 C7 00 E4 40

            try
            {
                enviaBuffer(buffer, true, tcp, hash, ref logManager);
                try
                {
                    // Lê resposta do REP
                    byte[] respostaREP       = lerResposta(tcp, Protocolo.QTD_BYTES_CABECALHO_CRIPTOGRAFADO, hash, ref logManager);
                    int    qtdBytesRecebidos = -1;
                    if (respostaREP != null)
                    {
                        qtdBytesRecebidos = respostaREP.Length;
                    }
                    // Trata a resposta do REP
                    flagErroComando = tratarResposta(CodigosComandos.ENVIAR_DATA_HORA, respostaREP, qtdBytesRecebidos, Protocolo.QTD_BYTES_CABECALHO_CRIPTOGRAFADO);
                }
                catch (Exception e)
                {
                    throw e;
                }
                tcp.finalizaConexao();
            }
            catch (Exception e)
            {
                flagErroComando.setErro(FlagErroComando.OCORREU_EXCECAO);
                throw e;
            }
            return(flagErroComando);
        }
Beispiel #2
0
 public static byte[] criarPacoteCabecalho(int start, int codigoComando, byte[] parametro, byte[] tamanho, byte[] cpfPis, byte flag, int end)
 {
     try
     {
         byte[] requisicao = { (byte)start                                                         // Campo Start 1 byte
                               , 0x00, 0x00, 0x00, 0x00                                            // Campo Endereço 4 bytes
                               , (byte)codigoComando };                                            // Campo Comando 1 byte
         requisicao = ProtocoloUtils.merge(new byte[][] { requisicao, parametro });                // Campo Parâmetro 4 bytes
         requisicao = ProtocoloUtils.merge(new byte[][] { requisicao, tamanho });                  // Campo Tamanho 4 bytes
         requisicao = ProtocoloUtils.merge(new byte[][] { requisicao, cpfPis });                   // Campo CPF/PIS 6 bytes
         requisicao = ProtocoloUtils.merge(new byte[][] { requisicao, new byte[] { flag } });      // Campo Flag/Erro 1 byte
         requisicao = ProtocoloUtils.calcularChecksum(requisicao);                                 // Campo BCC 1 byte
         requisicao = ProtocoloUtils.merge(new byte[][] { requisicao, new byte[] { (byte)end } }); // Campo Flag/Erro 1 byte
         return(requisicao);
     }
     catch (Exception e)
     {
         return(null);
     }
 }