Página 1 de 1

String ANSI C.

MensagemEnviado: 28 Nov 2012 09:12
por fabim
Pessoal, estou tentanto lembrar, mais não recordo nem a fogo.
Uma vez eu vi em algum lugar uma forma de criar uma string de forma que os chars dentro não interessam.
Motivo, quando eu faço;

char perigo[]={'aqui dentro tem mais um monte de "{}" e de " ' " '};
O que esta dentro desta string são os bytes puros de um arquivo wave, que eu abri no notepad !!

Não recordo mais o nome do software que eu usava pra exportar para arquivo HEX, int ou float, signed ou unsigned...
Faz muito tempo.

Alguém ai lembra como faz ? o famoso DAT ? Não me recordo nem a pau !!

Abraços fabim

Re: String ANSI C.

MensagemEnviado: 24 Mar 2014 19:03
por Francesco
Grande Fabim,

Então, eu cheguei a fazer algo parecido, mas lendo os arquivos WAV de um SDCard. Se você quer integrar como constante na flash do seu uC, precisa primeiro converter para HEX. Não encontrei nenhum programa que faça isso, nem mesmo meus dois editores hexas... então provavelmente eu faria um programinha rápido em Linux para fazer essa conversão. Não é dificil, algo mais ou menos assim.

cpp code
#include "stdio.h"

int main( int argc , char * argv[] )
{
FILE * arquivo ;
int letra ;

arquivo = fopen( argv[ 1 ] , "r" ) ;
if( arquivo == ( FILE * ) NULL )
{
printf( "Erro..." ) ;
return( -1 ) ;
}

for( ; ; )
{
letra = getc( arquivo ) ;
if( letra <= -1 )
break ;
printf( "0x%02X " , ( unsigned char ) letra ) ;
}

fclose( arquivo ) ;
return( 0 ) ;
}


E para executar esse código, faria algo como...
./converte arquivo.wav > arquivo.txt

Bom... uma vez como esse código na mão, aí basta criar o buffer.

cpp code
unsigned char buffer_wav[] = { 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05... } ;


Fabim, é mais ou menos isso que você precisa?
Precisa que esse buffer faça mais algma coisa?

Francesco

Re: String ANSI C.

MensagemEnviado: 25 Mar 2014 08:05
por Rodrigo_P_A
Tenta o winhex

Re: String ANSI C.

MensagemEnviado: 25 Mar 2014 11:35
por Francesco
Ótima dica!
Baixei e testei o WinHex e ele realmente tem uma função de conversão de Binário para HEX.

Re: String ANSI C.

MensagemEnviado: 25 Mar 2014 13:24
por vtrx
Se não estou enganado,este post esta faltando partes pois acho que alterei o meu programa(na época) para salvar em DAT tambem para o Fabim poder usar.
http://www.4shared.com/rar/NXSRjocy/AudioHex.html

Re: String ANSI C.

MensagemEnviado: 25 Mar 2014 13:58
por Francesco
Olá Vtrx,

Sim, converter o arquivo WAV é só um pedaço pequeno do trabalho. O ponto mais importante é como colocar isso no projeto.

Ele pode colocar os dados diretamente como um const unsigned char [].
No entanto, ele pode modificar a rotina de execução do wav e tirar o cabeçalho desse HEX. Assim ele libera espaço de memória e tem uma execução muito mais rápida. No entanto, se ele mudar para um WAV 16 bits, ou aumentar o número de canais, o código original poderia ser mais interessante.

Francesco

Re: String ANSI C.

MensagemEnviado: 25 Mar 2014 14:15
por vtrx
Sim,o programa que fiz ,na época,salva só os bytes de áudio em hex ou dat como ele queria.
Atualmente meus programas auxiliares de projeto,salvam também em Bin,assim posso ler direto de um cartão SD sem precisar 'processar' os bytes.
A vantagem deste programa,na época, é que voce pode 'escutar' o áudio lendo diretamente o arquivo hex,deste modo voce pode verificar qual é o conteúdo mesmo sem cabeçalho.

Re: String ANSI C.

MensagemEnviado: 25 Mar 2014 14:31
por xultz
Se não me engano, o Audacity consegue exportar o áudio num formato RAW sem cabeçalho.