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"); } }
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); } } }
//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); }
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; } } } }
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; } }