Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3096 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá amigos, 

Bom dia!

Sou novo por aqui e gostaria de saber se estou no caminho certo.

Trabalho com o MS visual Studio, C#.

Ao utilizar a NFe.ConsultaCadastro() estou criando o TXT com o camando na pasta monitorada e lendo o TXT de retorno, utilizando o código abaixo:

No código leio todas as linhas do TXT de retorno e pego separadamente as informações de antes e depois do sinal de "="

        public static string[,] Envia_Comando_Acbr(string sComando)
        {
            string[,] sRet = new string[2,35];
            string sNomeArquivo = @"C:\Methodus\Cupom\Monitor\Envio\ENT.TXT";
            string sNomeArquivoRet = @"C:\Methodus\Cupom\Monitor\Retorno\ENT-resp.TXT";
            string sAux;

            bool sLocalizado = false;

            #region Envia Comando
            try
            {
                using (StreamWriter writer = new StreamWriter(sNomeArquivo))
                {
                    writer.Write(sComando);//Cria TXT com a string de comando recebida em sComando
                }
            }
            catch (Exception ex)//Se acontece erro na criação do TXT
            {
                sRet[0,0] = "ERRO:";
                sRet[1,0] = ex.Message;
                return sRet;
            }
            #endregion

            #region Retorno
            //Faz loop enquanto não encontra arquivo de retorno
            do
            {
                //Se não encontra retorno aguarda um instante para sua criação e liberação
                System.Threading.Thread.Sleep(1000);

                if (File.Exists(sNomeArquivoRet))//Arquivo encontrado
                {
                    try
                    {
                        StreamReader sr = new StreamReader(sNomeArquivoRet);
                        using (sr)
                        {
                            int Y = 0;
                            while ((sAux = sr.ReadLine()) != null)//Lê todas as linhas até o final do arquivo
                            {
                                int i = sAux.IndexOf(':');//Pega posição do caractere ":"
                                int itam = sAux.Length - (i + 1);

                                if (i > 0)//Se encontra caractere ":"
                                {
                                    sRet[0,Y] = sAux.Substring(0, i);//Carrega lado esquerdo do caractere ":"
                                    sRet[1,Y] = sAux.Substring(i + 1, itam);//Carrega Lado dirito do caractere ";"

                                }

                                int z = sAux.IndexOf('=');//Pega posição do caractere "="
                                int ztam = sAux.Length - (z + 1);
                                if (z > 0)//Se encontra caractere "="
                                {
                                    sRet[0,Y] = sAux.Substring(0, z);//Carrega lado esquerdo do caractere ":"
                                    sRet[1,Y] = sAux.Substring(z + 1, ztam);//Carrega Lado dirito do caractere ";"

                                }
                                Y += 1;
                            }

                        }
                        sLocalizado = true;//Marca como verdadeiro que arquivo retorno foi localizado
                        sr.Close();
                        File.Delete(sNomeArquivoRet);//Deleta arquikvo de retorno
                    }
                    catch (Exception ex)//Em caso de erro na leitura do retorno
                    {
                        sRet[0,0] = "ERRO:";
                        sRet[1,0] = ex.Message;
                    }
                }
            } while (sLocalizado == false);
            #endregion

            return sRet;//retorna string com todas as linhas
        }

É pra funcionar assim mesmo, ou tem um jeito mais fácil de fazer?

Deixei passar alguma coisa no tratamento dos retornos?

Obrigado pela ajuda.

  • Este tópico foi criado há 3096 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.