public VideoV02 InstanciarObjetoVideo(byte[] pixelBytes, int animacao, int alinhamento, UInt32 intervaloAnimacao, UInt32 tempoApresentacao, UInt32 altura, UInt32 largura)
        {
            VideoV02 video = new VideoV02();

            // Configuração de arquivo de vídeo
            video.animacao    = (byte)animacao;
            video.alinhamento = (byte)alinhamento;

            video.reservado1 = new byte[2];

            video.tempoRolagem = intervaloAnimacao;

            video.tempoApresentacao = tempoApresentacao;
            video.Altura            = altura;
            video.Largura           = largura;

            video.reservado2 = new byte[38];

            video.pixelBytes = pixelBytes;


            /// CRC
            //video.crc = CRC16CCITT.Calcular(video.ToArrayBytes());
            //video.AtualizarCRC(caminhoArquivo);

            return(video);
        }
        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");
            }
        }
示例#3
0
        private void CarregarListaVideos()
        {
            listaVideos.Clear();
            foreach (string caminho in listaPaths)
            {
                if (caminho.EndsWith(".v01"))
                {
                    VideoV01 video = new VideoV01();

                    if (caminho.Contains(":"))
                    {
                        video.Abrir(caminho);
                    }
                    else
                    {
                        video.Abrir(DiretorioRaiz + Util.Util.TrataDiretorioFWParaWindows(Util.Util.ARQUIVO_SEPARADOR_DIRETORIO + caminho));
                    }
                    listaVideos.Add(video);
                }
                else if (caminho.EndsWith(".v02"))
                {
                    VideoV02 video = new VideoV02();

                    if (caminho.Contains(":"))
                    {
                        //se for mais de um video
                        video.Abrir(caminho);
                    }
                    else
                    {
                        // se for apenas um video
                        video.Abrir(DiretorioRaiz + Util.Util.TrataDiretorioFWParaWindows(Util.Util.ARQUIVO_SEPARADOR_DIRETORIO + caminho));
                    }
                    listaVideos.Add(video);
                }
                else if (caminho.EndsWith(".v04"))
                {
                    VideoV04 video = new VideoV04();

                    if (caminho.Contains(":"))
                    {
                        video.Abrir(caminho);
                    }
                    else
                    {
                        video.Abrir(DiretorioRaiz + Util.Util.TrataDiretorioFWParaWindows(Util.Util.ARQUIVO_SEPARADOR_DIRETORIO + caminho));
                    }
                    listaVideos.Add(video);
                }
            }
        }
示例#4
0
        //construtor de cópia produnda (deep copy) para v02
        public VideoV02(VideoV02 oldValue)
        {
            this.versao = oldValue.versao;

            this.Formato = new byte[oldValue.Formato.Length];
            oldValue.Formato.CopyTo(this.Formato, 0);

            this.animacao    = oldValue.animacao;
            this.alinhamento = oldValue.alinhamento;

            this.reservado1 = new byte[oldValue.reservado1.Length];
            oldValue.reservado1.CopyTo(this.reservado1, 0);

            this.tempoRolagem      = oldValue.tempoRolagem;
            this.tempoApresentacao = oldValue.tempoApresentacao;
            this.Altura            = oldValue.Altura;
            this.Largura           = oldValue.Largura;

            this.reservado2 = new byte[oldValue.reservado2.Length];
            oldValue.reservado2.CopyTo(this.reservado2, 0);

            this.pixelBytes = new byte[oldValue.pixelBytes.Length];
            oldValue.pixelBytes.CopyTo(this.pixelBytes, 0);

            this._indice = oldValue.Indice;
            this.tamanho = oldValue.tamanho;

            //tentativa do uso do reflection para construtores de cópia.
            //FieldInfo[] fields_of_class = this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);

            //foreach(FieldInfo fi in fields_of_class)
            //{
            //    fi.SetValue(this, fi.GetValue(oldValue));
            //}

            // //public MyClass( MyClass rhs )
            // //{
            // //// get all the fields in the class
            // //FieldInfo[] fields_of_class = this.GetType().GetFields(
            // //BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance );

            // //// copy each value over to 'this'
            // //foreach( FieldInfo fi in fields_of_class )
            // //{
            // //fi.SetValue( this, fi.GetValue( rhs ) );
            // //}
            // //}
            // //
        }
 public VideoV02 AbrirArquivo(string videoPath)
 {
     video = (VideoV02)video.Abrir(videoPath);
     return(video);
 }
示例#6
0
        public void LoadFromBytes(byte[] dados)
        {
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoPlaylist *listaArquivos = (FormatoPlaylist *)pSrc;

                    Byte[] temporario = new byte[listaArquivos->qtdArquivos];

                    listaArquivos->Tamanho = (UInt32)dados.Length;

                    this.versao = listaArquivos->versao;

                    this.qtdArquivos = listaArquivos->qtdArquivos;

                    // Limpa a lista
                    this.listaVideos.Clear();
                    int indice = sizeof(FormatoPlaylist) - sizeof(UInt32);

                    for (int i = 0; i < this.qtdArquivos; i++)
                    {
                        int indiceInicial = indice;
                        // Pegar o tamanho do Arquivo
                        uint   tamanhoArquivo = BitConverter.ToUInt32(dados, indice);
                        byte[] dadosVideo     = new byte[tamanhoArquivo];
                        // Atualiza o indice com o tamanho do arquivo
                        indice += sizeof(uint);
                        // Pular a versão
                        indice++;

                        Array.Copy(dados, indiceInicial, dadosVideo, 0, tamanhoArquivo);


                        // Pegar o formato do Arquivo Ex.: V02
                        if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("V01"))
                        {
                            // Instancia o video a partir do formato
                            VideoV01 video = new VideoV01();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }
                        else if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("V02"))
                        {
                            // Instancia o video a partir do formato
                            VideoV02 video = new VideoV02();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }
                        else if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("V04"))
                        {
                            // Instancia o video a partir do formato
                            VideoV04 video = new VideoV04();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }

                        indice = indice + dadosVideo.Length;
                        indice = indice - sizeof(uint);
                        indice = indice - 1;
                    }
                }
            }
        }
示例#7
0
        public void LoadFromBytes(byte[] dados)
        {
            if (null == this.listaVideos)
            {
                this.listaVideos = new List <IVideo>();
            }
            unsafe
            {
                fixed(byte *pSrc = dados)
                {
                    FormatoVideo04 *listaArquivos = (FormatoVideo04 *)pSrc;

                    Byte[] temporario = new byte[listaArquivos->qntFrames];

                    listaArquivos->Tamanho = (UInt32)dados.Length;

                    this.versao = listaArquivos->versao;

                    uint qtdFrames = listaArquivos->qntFrames;

                    // Limpa a lista
                    this.listaVideos.Clear();
                    int indice = sizeof(FormatoVideo04) - sizeof(UInt32);

                    for (int i = 0; i < qtdFrames; i++)
                    {
                        FormatoFrame temporaria = new FormatoFrame();

                        temporaria.x = BitConverter.ToUInt32(dados, indice);
                        indice      += sizeof(uint);

                        temporaria.y = BitConverter.ToUInt32(dados, indice);
                        indice      += sizeof(uint);

                        temporaria.height = BitConverter.ToUInt32(dados, indice);
                        indice           += sizeof(uint);

                        temporaria.width = BitConverter.ToUInt32(dados, indice);
                        indice          += sizeof(uint);



                        listaFrames.Add(temporaria);

                        // Pegar o tamanho do Arquivo
                        uint   tamanhoArquivo = BitConverter.ToUInt32(dados, indice);
                        byte[] dadosVideo     = new byte[tamanhoArquivo];

                        Array.Copy(dados, indice, dadosVideo, 0, tamanhoArquivo);

                        // índice do tamanho
                        indice += sizeof(uint);
                        // índice da versão
                        indice++;

                        // Pegar o formato do Arquivo Ex.: V02
                        if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("V01"))
                        {
                            // Instancia o video a partir do formato
                            VideoV01 video = new VideoV01();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }
                        else if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("V02"))
                        {
                            // Instancia o video a partir do formato
                            VideoV02 video = new VideoV02();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }
                        else if (Encoding.ASCII.GetString(dados, indice, 3).ToUpper().Equals("PLS"))
                        {
                            // Instancia o video a partir do formato
                            Arquivo_PLS video = new Arquivo_PLS();
                            // Carrega através do ARRAY
                            video.LoadFromBytes(dadosVideo);
                            // Adiciona o video
                            listaVideos.Add(video);
                        }

                        indice = indice + dadosVideo.Length - (sizeof(uint) + 1 /*tamanho da versão*/);
                    }
                }
            }
        }
        private void SalvaRoteiros(int indicePainel)
        {
            int           numRoteiros     = parser.control.QtdRoteiros;
            int           count           = 0 + indicePainel;
            List <String> lArquivosNumero = new List <string>();
            List <String> lArquivosIda    = new List <string>();
            List <String> lArquivosVolta  = new List <string>();

            // Reinicia o sequencial do arquivo de roteiros devido a mudança de Painéis.
            sequencial_arquivo_roteiros = 0;

            for (int j = 0; j < numRoteiros; j++)
            {
                lArquivosNumero.Clear();
                lArquivosIda.Clear();
                lArquivosVolta.Clear();
                Controlador.Roteiro r = new Controlador.Roteiro();
                r.ID = count;
                //RandomizaId(id);
                r.ID = r.ID + 1;
                //Verifica o count de texto. caso tenha mais de um texto, deve-se
                //proceder de uma forma diferente: continua-se criando os .v01 .v02 etc..
                //mas tem de se construir um arquivo .pls(que conterá os nomes desses vídeos)
                //que será apontado por um arquivo path(.mpt ou .rpt) e que será gravado no mesmo diretório de videos(O arquivo .pls).
                //O arquivo .pls é considerado um arquivo de vídeo.
                #region Numero do Roteiro

                String nome_arquivo = DiretorioPrincipal + DIRETORIO_VIDEOS + @"\" + sequencial_arquivo_V02.ToString("X8");

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

                videoNumero.Altura  = parser.control.Painel[indicePainel].Altura;
                videoNumero.Largura = parser.control.Painel[indicePainel].Largura;

                videoNumero.animacao = (byte)parser.RetornaRolagemNumeroRoteiro(indicePainel, j);

                videoNumero.tempoRolagem      = parser.control.TempoRolagem;
                videoNumero.tempoApresentacao = parser.control.TempoRoteiro[0];

                videoNumero.pixelBytes = parser.RetornarPixelBytesNumeroRoteiro(indicePainel, j);
                videoNumero.Largura    = (uint)parser.RetornarLarguraPixelBytesNumeroRoteiro(indicePainel, j);
                videoNumero.Salvar(nome_arquivo, true);
                sequencial_arquivo_V02 = sequencial_arquivo_V02 + 1;
                lArquivosNumero.Add(nome_arquivo + Util.Util.ARQUIVO_EXT_V02);

                #endregion

                #region Ida
                int QuantidadeFrases = parser.RetornarQuantidadeFrases(indicePainel, j, true);

                for (int ntexto = 0; ntexto < QuantidadeFrases; ntexto++)
                {
                    count = count + 1;

                    nome_arquivo = DiretorioPrincipal + DIRETORIO_VIDEOS + @"\" + sequencial_arquivo_V02.ToString("X8");

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

                    v02.Altura  = parser.control.Painel[indicePainel].Altura;
                    v02.Largura = parser.control.Painel[indicePainel].Largura;

                    v02.animacao = (byte)parser.RetornaRolagemRoteiro(indicePainel, j, ntexto, true);

                    v02.tempoRolagem = parser.control.TempoRolagem;

                    v02.tempoApresentacao = parser.control.TempoRoteiro[0];

                    v02.pixelBytes = parser.RetornarPixelBytesRoteiros(indicePainel, j, ntexto, true);
                    v02.Largura    = (uint)parser.RetornarLarguraPixelBytesRoteiros(indicePainel, j, ntexto, true);

                    v02.Salvar(nome_arquivo, true);
                    sequencial_arquivo_V02 = sequencial_arquivo_V02 + 1;
                    lArquivosIda.Add(nome_arquivo + Util.Util.ARQUIVO_EXT_V02);

                    Persistencia.Videos.VideoV04 v04 = new VideoV04();

                    v04.listaVideos = new List <IVideo>();
                    v04.listaVideos.Add(v02);
                    v04.listaVideos.Add(v02);
                }

                #endregion

                #region Volta
                QuantidadeFrases = parser.RetornarQuantidadeFrases(indicePainel, j, false);

                for (int ntexto = 0; ntexto < QuantidadeFrases; ntexto++)
                {
                    count = count + 1;

                    nome_arquivo = DiretorioPrincipal + DIRETORIO_VIDEOS + @"\" + sequencial_arquivo_V02.ToString("X8");

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

                    v02.Altura  = parser.control.Painel[indicePainel].Altura;
                    v02.Largura = parser.control.Painel[indicePainel].Largura;

                    v02.animacao = (byte)parser.RetornaRolagemRoteiro(indicePainel, j, ntexto, false);

                    v02.tempoRolagem = parser.control.TempoRolagem;

                    v02.tempoApresentacao = parser.control.TempoRoteiro[0];

                    v02.pixelBytes = parser.RetornarPixelBytesRoteiros(indicePainel, j, ntexto, false);
                    v02.Largura    = (uint)parser.RetornarLarguraPixelBytesRoteiros(indicePainel, j, ntexto, false);

                    v02.Salvar(nome_arquivo, true);
                    sequencial_arquivo_V02 = sequencial_arquivo_V02 + 1;
                    lArquivosVolta.Add(nome_arquivo + Util.Util.ARQUIVO_EXT_V02);
                }

                #endregion

                SalvaROT(r.ID.ToString("00"), indicePainel, j, 0, 0, true);

                Arquivo_RPT arptTemp = new Arquivo_RPT();

                arptTemp.CriarRoteirosPathPadrao();
                arptTemp.idRoteiro = System.Convert.ToUInt16(r.ID.ToString("00"));

                CriaPlaylist(lArquivosIda);
                arptTemp.pathExibicaoIda = Util.Util.DIRETORIO_VIDEOS_FIRMWARE + sequencial_arquivo_PLS.ToString("X8") + @".pls";
                sequencial_arquivo_PLS++;

                CriaPlaylist(lArquivosVolta);
                arptTemp.pathExibicaoVolta = Util.Util.DIRETORIO_VIDEOS_FIRMWARE + sequencial_arquivo_PLS.ToString("X8") + @".pls";
                sequencial_arquivo_PLS++;

                CriaPlaylist(lArquivosNumero);
                arptTemp.pathNumeroRoteiro = Util.Util.DIRETORIO_VIDEOS_FIRMWARE + sequencial_arquivo_PLS.ToString("X8") + @".pls";
                sequencial_arquivo_PLS++;

                arptTemp.pathExibicaoIda   = Util.Util.TrataDiretorio(arptTemp.pathExibicaoIda);
                arptTemp.pathExibicaoVolta = Util.Util.TrataDiretorio(arptTemp.pathExibicaoVolta);
                arptTemp.pathNumeroRoteiro = Util.Util.TrataDiretorio(arptTemp.pathNumeroRoteiro);

                arptTemp.Salvar(DiretorioPrincipal + DIRETORIO_PAINEIS + @"\" + indicePainel.ToString("d2") +
                                DIRETORIO_PAINEL_ROTEIROS + @"\" + sequencial_arquivo_roteiros.ToString("X8"));

                arptTemp.GerarFormatoNovo(DiretorioPrincipal + DIRETORIO_PAINEIS + @"\" + indicePainel.ToString("d2") + DIRETORIO_PAINEL_ROTEIROS + @"\" + sequencial_arquivo_roteiros.ToString("X8") + ".rpt", DiretorioPrincipal);

                sequencial_arquivo_roteiros = sequencial_arquivo_roteiros + 1;
            }
        }
        private void SalvaMensagens(int indicePainel)
        {
            List <String> lArquivosMensagens = new List <string>();

            //sequencial_arquivo_mensagens = 0;
            Util.Util.sequencial_arquivo_mensagens = 0;
            //salvando mensagens.
            if (indicePainel == 0)
            {
                GerarMensagemEmergencia();
            }
            for (int msg = 1; msg < parser.control.QtdMensagens; msg++)
            {
                int quantidadeFrases   = parser.RetornarQuantidadeFrases(indicePainel, msg);
                Controlador.Mensagem m = new Controlador.Mensagem();

                lArquivosMensagens.Clear();

                for (int indiceFrase = 0; indiceFrase < quantidadeFrases; indiceFrase++)
                {
                    if (indicePainel == 0)
                    {
                        m.ID = msg;
                        // m.IndicePainel = indicePainel;
                        m.LabelMensagem = parser.RetornaLabelMensagem(indicePainel, msg, indiceFrase, 0);
                        //m.Rolagem = (Util.Util.Rolagem) parser.RetornaRolagemMensagem(indicePainel, msg, indiceFrase);

                        //m.TempoApresentacao = parser.control.TempoMensagem.ToString("0");
                        //m.TempoRolagem = parser.control.TempoRolagem.ToString("0");

                        m.Salvar(DiretorioPrincipal, indicePainel, (uint)parser.control.Painel[indicePainel].Altura, (uint)parser.control.Painel[indicePainel].Largura);
                    }

                    String nome_arquivo = DiretorioPrincipal + DIRETORIO_VIDEOS + @"\" +
                                          sequencial_arquivo_V02.ToString("X8");

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

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

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

                    videoMensagem.tempoRolagem      = parser.control.TempoRolagem;
                    videoMensagem.tempoApresentacao = parser.control.TempoRoteiro[0];

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

                Arquivo_MPT armtTemp = new Arquivo_MPT();

                armtTemp.CriarMensagemPathPadrao();
                armtTemp.idMensagem = System.Convert.ToUInt16(m.ID.ToString("00"));

                CriaPlaylist(lArquivosMensagens);
                armtTemp.pathVideo = Util.Util.DIRETORIO_VIDEOS_FIRMWARE + sequencial_arquivo_PLS.ToString("X8") +
                                     @".pls";
                sequencial_arquivo_PLS++;

                armtTemp.pathVideo = Util.Util.TrataDiretorio(armtTemp.pathVideo);

                armtTemp.Salvar(DiretorioPrincipal + DIRETORIO_PAINEIS + @"\" + indicePainel.ToString("d2") +
                                DIRETORIO_PAINEL_MSGS + @"\");

                armtTemp.GerarFormatoNovo(DiretorioPrincipal + DIRETORIO_PAINEIS + @"\" + indicePainel.ToString("d2") +
                                          DIRETORIO_PAINEL_MSGS + @"\", DiretorioPrincipal);

                Util.Util.sequencial_arquivo_mensagens = Util.Util.sequencial_arquivo_mensagens + 1;
            }
        }