Example #1
0
        private String CriarPlaylist(String diretorio, List <String> ListaArquivos)
        {
            String arquivoPls = diretorio +
                                //Util.Util.ARQUIVO_SEPARADOR_DIRETORIO_WINDOWS+
                                //Util.Util.DIRETORIO_VIDEOS +
                                Util.Util.sequencial_arquivo_videos.ToString("X8");

            //Arquivo_LST playlist = new Arquivo_LST();
            Arquivo_PLS playlist = new Arquivo_PLS(diretorio);

            playlist.Default();
            playlist.listaPaths.Clear();

            if (ListaArquivos.Count > 0)
            {
                //foreach (String nome_arquivo in ListaArquivos)
                //{
                //    playlist.listaPaths.Add(nome_arquivo.Substring(1)); //tira a barra do início.
                //}

                playlist.QTDArquivos = ListaArquivos.Count;
                playlist.listaPaths.AddRange(ListaArquivos.ToArray());
                playlist.Salvar(arquivoPls, true);
            }

            Util.Util.sequencial_arquivo_videos = Util.Util.sequencial_arquivo_videos + 1;

            return(Util.Util.DIRETORIO_VIDEOS + Util.Util.RetornaNomeArquivo(arquivoPls) + Util.Util.ARQUIVO_EXT_PLS);
        }
        private void CriaPlaylist(List <String> ListaArquivos)
        {
            //Arquivo_LST playlist = new Arquivo_LST();
            Arquivo_PLS playlist = new Arquivo_PLS(DiretorioPrincipal);

            playlist.Default();
            playlist.listaPaths.Clear();

            if (ListaArquivos.Count > 0)
            {
                foreach (String nome_arquivo in ListaArquivos)
                {
                    String nomeArquivoTemp = nome_arquivo.Substring(DiretorioPrincipal.Count());
                    nomeArquivoTemp = Util.Util.TrataDiretorio(nomeArquivoTemp);

                    if (nomeArquivoTemp.Contains('/'))
                    {
                        int indice = nomeArquivoTemp.IndexOf('/');
                    }

                    playlist.listaPaths.Add(nomeArquivoTemp.Substring(1)); //tira a barra do início.
                }

                playlist.QTDArquivos = ListaArquivos.Count;
                playlist.Salvar(DiretorioPrincipal + DIRETORIO_VIDEOS + @"\" + sequencial_arquivo_PLS.ToString("X8"));
            }
        }
Example #3
0
        /// <summary>
        /// Carrega um array de bytes como vídeo.
        /// </summary>
        /// <param name="tipo">tipo do arquivo em string.</param>
        /// <param name="lLista">Lista a receber o arquivo de vídeo.</param>
        /// <param name="indice">índice de começo do vídeo.</param>
        /// <param name="dadosVideo">conjunto de bytes do vídeo.</param>
        private void CarregaVideos(String tipo,
                                   List <Video> Videos,
                                   int indice,
                                   Byte[] dadosVideo)
        {
            //todo: tentar substituir as strings e utilizar tipovideo.

            //caso o vídeo seja apenas vídeo e não PLS então será apenas UM arquivo de vídeo.
            switch (tipo)
            {
            case "V01":
            {
                // Instancia o video a partir do formato
                VideoV01 video = new VideoV01();
                // Carrega através do ARRAY
                video.LoadFromBytes(dadosVideo);
                // Adiciona o video
                Videos.Add(video);
            }
            break;

            case "V02":
            {
                // Instancia o video a partir do formato
                VideoV02 video = new VideoV02();
                // Carrega através do ARRAY
                video.LoadFromBytes(dadosVideo);
                // Adiciona o video
                Videos.Add(video);
            }
            break;

            case "V03":
            {
            }
            break;

            case "V04":
            {
            }
            break;

            case "PLS":
            {
                //Instancia o PLS.
                Arquivo_PLS please = new Arquivo_PLS();

                please.LoadFromBytes(dadosVideo);

                foreach (Video video in please.listaVideos)
                {
                    Videos.Add(video);
                }
            }
            break;
            }
        }
        private void GerarMensagemEmergencia()
        {
            List <String> lArquivosMensagens = new List <string>();

            int quantidadeFrases = parser.RetornarQuantidadeFrases(0, 0);

            for (int indiceFrase = 0; indiceFrase < quantidadeFrases; indiceFrase++)
            {
                String nome_arquivo = DiretorioPrincipal + DIRETORIO_VIDEOS + @"\" + sequencial_arquivo_V02.ToString("X8");

                Persistencia.Videos.VideoV02 videoMensagem = new Persistencia.Videos.VideoV02();

                videoMensagem.Altura  = parser.control.Painel[0].Altura;
                videoMensagem.Largura = parser.control.Painel[0].Largura;

                videoMensagem.animacao = (byte)parser.RetornaRolagemMensagem(0, 0, indiceFrase);

                videoMensagem.tempoRolagem      = parser.control.TempoRolagem;
                videoMensagem.tempoApresentacao = parser.control.TempoMensagem;

                videoMensagem.pixelBytes = parser.RetornarPixelBytesMensagens(0, 0, indiceFrase);
                videoMensagem.Largura    = (uint)parser.RetornarLarguraPixelBytesMensagens(0, 0, indiceFrase);
                videoMensagem.Salvar(nome_arquivo, true);
                sequencial_arquivo_V02 = sequencial_arquivo_V02 + 1;
                lArquivosMensagens.Add(nome_arquivo + Util.Util.ARQUIVO_EXT_V02);
            }

            //Arquivo_LST playlist = new Arquivo_LST();
            Arquivo_PLS playlist = new Arquivo_PLS(DiretorioPrincipal);

            playlist.Default();
            playlist.listaPaths.Clear();

            if (lArquivosMensagens.Count > 0)
            {
                foreach (String nome_arquivo in lArquivosMensagens)
                {
                    String nomeArquivoTemp = nome_arquivo.Substring(DiretorioPrincipal.Count());
                    nomeArquivoTemp = Util.Util.TrataDiretorio(nomeArquivoTemp);

                    if (nomeArquivoTemp.Contains('/'))
                    {
                        int indice = nomeArquivoTemp.IndexOf('/');
                    }

                    playlist.listaPaths.Add(nomeArquivoTemp.Substring(1)); //tira a barra do início.
                }

                playlist.QTDArquivos = lArquivosMensagens.Count;
                playlist.Salvar(DiretorioPrincipal + DIRETORIO_PAINEIS + @"\00\emerg");
            }
        }
Example #5
0
        public void GerarPlaylist(uint altura, uint largura, int indicePainel)
        {
            // indicePainel igual 0xff significa que não tem NSS na configuração.
            if (indicePainel == 0xff)
            {
                indicePainel = 0;
            }

            string diretorio_raiz = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
            string arquivo_temporario_MsgEmerg = diretorio_raiz +
                                                 Util.Util.DIRETORIO_APP +
                                                 Util.Util.DIRETORIO_TEMPORARIO +
                                                 Util.Util.DIRETORIO_PAINEL +
                                                 indicePainel.ToString(Util.Util.ARQUIVO_PAINEL_NUMEROALGS) +
                                                 Util.Util.ARQUIVO_PLS_EMERG;

            string diretorio_temporario_Videos = diretorio_raiz +
                                                 Util.Util.DIRETORIO_APP +
                                                 Util.Util.DIRETORIO_TEMPORARIO +
                                                 Util.Util.DIRETORIO_PAINEL +
                                                 indicePainel.ToString(Util.Util.ARQUIVO_PAINEL_NUMEROALGS);
            List <String> lArquivosMensagens = new List <string>();

            int quantidadeFrases = Frases.Count;
            int i = 0;

            foreach (Frase f in Frases)
            {
                f.Salvar(diretorio_temporario_Videos + "//", altura, largura);
                lArquivosMensagens.Add(diretorio_temporario_Videos + "//" + Util.Util.sequencial_arquivo_videos.ToString("X8") + Util.Util.ARQUIVO_EXT_V02);
                Util.Util.sequencial_arquivo_videos++;
            }

            #region Playlist da Mensagem de Emergência
            Arquivo_PLS playlist = new Arquivo_PLS(diretorio_raiz);

            playlist.Default();
            playlist.listaPaths.Clear();

            if (lArquivosMensagens.Count > 0)
            {
                foreach (String arquivo in lArquivosMensagens)
                {
                    String nomeArquivoTemp = arquivo.Substring(diretorio_raiz.Count());
                    nomeArquivoTemp = Util.Util.TrataDiretorio(nomeArquivoTemp);

                    if (nomeArquivoTemp.Contains('/'))
                    {
                        int indice = nomeArquivoTemp.IndexOf('/');
                    }

                    playlist.listaPaths.Add(nomeArquivoTemp.Substring(1)); //tira a barra do início.
                }

                playlist.QTDArquivos = lArquivosMensagens.Count;
                playlist.Salvar(arquivo_temporario_MsgEmerg, true);
            }
            #endregion Playlist da Mensagem de Emergência

            // Ao final, apagamos os arquivos temporários gerados
            Util.Util.sequencial_arquivo_videos = 0;

            foreach (Frase f in Frases)
            {
                if (File.Exists(diretorio_temporario_Videos + "//" + Util.Util.sequencial_arquivo_videos.ToString("X8") + Util.Util.ARQUIVO_EXT_V02))
                {
                    File.Delete(diretorio_temporario_Videos + "//" + Util.Util.sequencial_arquivo_videos.ToString("X8") + Util.Util.ARQUIVO_EXT_V02);
                }
                Util.Util.sequencial_arquivo_videos++;
            }
            Util.Util.sequencial_arquivo_videos = 0;
            // #region Primeira Frase da Emergência
            //String nome_arquivo = diretorio_raiz + DIRETORIO_VIDEOS + @"\emerg1";

            //Persistencia.Videos.VideoV02 videoMensagem = new Persistencia.Videos.VideoV02();

            //videoMensagem.Altura = (uint)this.Paineis[0].Altura;
            //videoMensagem.Largura = (uint)this.Paineis[0].Largura;

            //videoMensagem.animacao = (byte)this.Paineis[0].MensagemEmergencia.Frases[0].Modelo.Textos[0].Apresentacao;

            //videoMensagem.tempoRolagem = Convert.ToUInt32(this.Paineis[0].MensagemEmergencia.Frases[0].Modelo.Textos[0].TempoRolagem);
            //videoMensagem.tempoApresentacao = Convert.ToUInt32(this.Paineis[0].MensagemEmergencia.Frases[0].Modelo.Textos[0].TempoApresentacao);

            ////preparaPixelBytes(ref videoMensagem, this.Paineis[0].MensagemEmergencia.Frases[0].Modelo.Textos[0],
            ////                                  null,
            ////                                  null,
            ////                                  null,
            ////                                  0,
            ////                                  Util.Util.TipoModelo.Texto,
            ////                                  Util.Util.TipoVideo.V02);

            //videoMensagem.Largura = (uint)this.Paineis[0].Largura;
            //videoMensagem.Salvar(nome_arquivo, true);
            ////sequencial_arquivo_V02 = sequencial_arquivo_V02 + 1;
            //lArquivosMensagens.Add(nome_arquivo + Util.Util.ARQUIVO_EXT_V02);
            //#endregion  Primeira Frase da Emergência

            //#region  Segunda Frase da Perigo
            //nome_arquivo = diretorio_raiz + DIRETORIO_VIDEOS + @"\emerg1";

            //videoMensagem = new Persistencia.Videos.VideoV02();

            //videoMensagem.Altura = (uint)this.Paineis[0].Altura;
            //videoMensagem.Largura = (uint)this.Paineis[0].Largura;

            //videoMensagem.animacao = (byte)this.Paineis[0].MensagemEmergencia.Frases[0].Modelo.Textos[0].Apresentacao;

            //videoMensagem.tempoRolagem = Convert.ToUInt32(this.Paineis[0].MensagemEmergencia.Frases[0].Modelo.Textos[0].TempoRolagem);
            //videoMensagem.tempoApresentacao = Convert.ToUInt32(this.Paineis[0].MensagemEmergencia.Frases[0].Modelo.Textos[0].TempoApresentacao);

            ////preparaPixelBytes(ref videoMensagem, this.Paineis[0].MensagemEmergencia.Frases[1].Modelo.Textos[0],
            ////                                  null,
            ////                                  null,
            ////                                  null,
            ////                                  0,
            ////                                  Util.Util.TipoModelo.Texto,
            ////                                  Util.Util.TipoVideo.V02);

            //videoMensagem.Largura = (uint)this.Paineis[0].Largura;
            //videoMensagem.Salvar(nome_arquivo, true);
            ////sequencial_arquivo_V02 = sequencial_arquivo_V02 + 1;
            //lArquivosMensagens.Add(nome_arquivo + Util.Util.ARQUIVO_EXT_V02);
            //#endregion  Segunda Frase da Perigo
        }
Example #6
0
        /// <summary>
        /// Traduz os bytes de dados arrayados para o formato novo.
        /// </summary>
        /// <param name="dados">Arquivo já lido do disco.</param>
        private void FromBytesToFormatoMPT(byte[] dados)
        {
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoMensagemPaths *mensagemPaths = (FormatoMensagemPaths *)pSrc;

                    this.versao     = mensagemPaths->versao;
                    this.reservado  = mensagemPaths->reservado;
                    this.idMensagem = mensagemPaths->idMensagem;
                    for (int i = 0; i < 58; i++)
                    {
                        this.reservado2[i] = mensagemPaths->reservado2[i];
                    }
                    this.crc = mensagemPaths->crc;
                    //a princípio, vamos pular esses 64 bytes.
                    //this.pathVideo = ArrayLDX2.ByteArrayToString(mensagemPaths->pathVideo, 64);

                    //limpa a lista de videos
                    this.Videos.Clear();

                    //indice para leitura dos dados no arquivo.
                    int indice = sizeof(FormatoMensagemPaths) - 64;

                    //efetua a leitura do tamanho do vídeo.(próximos 4 bytes após o FormatoMensagemPaths)
                    uint TamanhoArquivo = BitConverter.ToUInt32(dados, indice);

                    //indice do inicio do arquivo a ser lido
                    int indiceInicial = indice;

                    //pula o tamanho. (já no conteúdo de vídeo.)
                    indice = indice + sizeof(uint);
                    //pula a versão.
                    indice = indice + 1;

                    //aloca o suficiente pra ler o vídeo.
                    byte[] dadosVideo = new byte[TamanhoArquivo];

                    //copia os dados do arquivo de vídeo com o tamanho e versão.
                    Array.Copy(dados, indiceInicial, dadosVideo, 0, TamanhoArquivo);

                    //verifica o tipo do vídeo(v01 ou v02) ou se é Arquivo PLS..Equals("V01")
                    String tipo = Encoding.ASCII.GetString(dados, indice, 3).ToUpper();

                    //todo: tentar substituir as strings e utilizar tipovideo.

                    //caso o vídeo seja apenas vídeo e não PLS então será apenas UM arquivo de vídeo.
                    switch (tipo)
                    {
                    case "V01":
                    {
                        // Instancia o video a partir do formato
                        VideoV01 video = new VideoV01();
                        // Carrega através do ARRAY
                        video.LoadFromBytes(dadosVideo);
                        // Adiciona o video
                        Videos.Add(video);
                    }
                    break;

                    case "V02":
                    {
                        // Instancia o video a partir do formato
                        VideoV02 video = new VideoV02();
                        // Carrega através do ARRAY
                        video.LoadFromBytes(dadosVideo);
                        // Adiciona o video
                        Videos.Add(video);
                    }
                    break;

                    case "V03":
                    {
                    }
                    break;

                    case "V04":
                    {
                    }
                    break;

                    case "PLS":
                    {
                        //Instancia o PLS.
                        Arquivo_PLS please = new Arquivo_PLS();

                        please.LoadFromBytes(dadosVideo);

                        foreach (Video video in please.listaVideos)
                        {
                            Videos.Add(video);
                        }
                    }
                    break;
                    }

                    indice += dadosVideo.Length;
                }
            }
        }
Example #7
0
        private void ReplacePathToPointer(string nomeArquivo, FileStream fs, int indiceArquivo)
        {
            uint enderecoBase = tabelinha.lista[indiceArquivo].offset;

            nomeArquivo = nomeArquivo.ToLower();

            if (nomeArquivo.EndsWith(".fix"))
            {
                // Bom Dia, Boa Tarde e Boa Noite
                for (uint i = 1; i <= 3; i++)
                {
                    EscreveOffSetArquivo(fs, (64 * i), PATH_SIZE_DEFAULT, enderecoBase);
                }
            }
            else if (nomeArquivo.EndsWith(".v01"))
            {
                EscreveOffSetArquivo(fs, 20, PATH_SIZE_V01, enderecoBase);
            }
            else if (nomeArquivo.EndsWith(".mpt"))
            {
                EscreveOffSetArquivo(fs, 64, PATH_SIZE_DEFAULT, enderecoBase);
            }
            else if (nomeArquivo.EndsWith(".rgn"))
            {
                EscreveOffSetArquivo(fs, 64, PATH_SIZE_DEFAULT, enderecoBase);
            }
            else if (nomeArquivo.EndsWith(".cfg"))
            {
                EscreveOffSetArquivo(fs, 12, PATH_SIZE_CFG, enderecoBase);
            }
            else if (nomeArquivo.EndsWith(".rpt"))
            {
                // Ida, Volta e Número
                for (uint i = 1; i <= 3; i++)
                {
                    EscreveOffSetArquivo(fs, (64 * i), PATH_SIZE_DEFAULT, enderecoBase);
                }
            }
            else if (nomeArquivo.EndsWith(".lst"))
            {
                Arquivo_LST arquivo = new Arquivo_LST();
                arquivo.Abrir(this.diretorioRaiz + nomeArquivo);
                uint quantidadeArquivos = arquivo.qtdArquivos;
                // Pegar a quantidade de arquivos
                for (uint i = 1; i <= quantidadeArquivos; i++)
                {
                    EscreveOffSetArquivo(fs, (64 * i), PATH_SIZE_DEFAULT, enderecoBase);
                }
            }
            else if (nomeArquivo.EndsWith(".pls"))
            {
                Arquivo_PLS arquivo = new Arquivo_PLS(diretorioRaiz);
                arquivo.Abrir(this.diretorioRaiz + nomeArquivo);
                uint quantidadeArquivos = arquivo.qtdArquivos;

                // Pegar a quantidade de arquivos
                for (uint i = 1; i <= quantidadeArquivos; i++)
                {
                    EscreveOffSetArquivo(fs, (64 * i), PATH_SIZE_DEFAULT, enderecoBase);
                }
            }
        }