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