Estou tentando escrever um programa que ajude a ler documentos em texto e pdf em C usando programas de código aberto no pi do framboesa.
o programa é simples, nada complicado .....
Estou conectando ao raspberry pi através do ssh do meu laptop ... O encaminhamento do X está funcionando bem, pois posso iniciar aplicativos X a partir da linha de comando sem problemas.
Estou usando o apache2 no raspberry pi e criei uma interface de usuário para este programa, onde você pode colar texto, enviar arquivos de texto ou arquivos pdf.
O texto é convertido em fala com o espeak, que salva a saída em um arquivo wave.
Agora, o problema é que eu uso:
system("xmms2 play file.wav &")
no código C ........ apenas uma breve descrição
ele compila ..... quando eu tento da página da web ele exibe erros:
Gtk-WARNING **: cannot open display: localhost:10.0
cannot start xmms2d.....failed to start xmms2 server
Eu até tentei outro player de áudio chamado aqualung e funcionou uma vez, mas no dia seguinte, quando reiniciei o computador, ele não funciona mais.
Eu pesquisei e fiz de tudo, desde export DISPLAY=:0.0
até ter certeza de que o nome do host no cliente e no host não é localhost mas não teve sucesso
Então eu acho que talvez haja algo que eu não adicionei no programa C, talvez um arquivo de cabeçalho que precise ser adicionado ou algo assim ..... O Gtk + está instalado no meu framboesa ....
Ou talvez eu não deva fazer isso como um programa em C, mas faço tudo em bash ou php ....
se eu uso aplay para reproduzir o arquivo wav, eu recebo saída de som, a única diferença que eu preciso de algo com a linha de comando e interface do usuário. então eu posso enviar comandos do programa e também o usuário pode pausar e reproduzir o arquivo sempre que ele quiser.
Pls alguns conselhos são necessários .... aqui é o código
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <wiringPi.h>
char readcmd(void) //reading from text file /home/pi/cmdrdy.txt first character is read
{ //whenever text is received a 1 is written to this file, 2 for file received
FILE *stream;
int ch;
if( (stream = fopen("/home/pi/txtrdy.txt", "r")) == NULL )
return 0;
ch = fgetc( stream );
fclose( stream );
return (ch-'0');
}
void reset()
{
FILE *ft;
char ch;
ft = fopen( "/home/pi/cmdrdy.txt", "w" );
ch = '0';
fprintf(ft, "%c", ch );
fclose(ft);
}
void checktxt(){
if(readcmd() == 1)
{
system("espeak -v en -f /home/pi/book.txt -w /home/pi/text.wav &");
reset(); //to reset the text received flag to 0
system("xmms2 play /home/pi/text.wav &");
}
if(readcmd2() == 2)
{
system("pdftotext -layout /home/pi/upload/*.pdf /home/pi/converted.txt &");
delay(300);
system("espeak -v en -f /home/pi/converted.txt -w /home/pi/book.wav &");
delay(500);
system("sudo rm /home/pi/converted.txt");
system("sudo rm /home/pi/upload/*.pdf");
system("xmm2 play /home/pi/book.wav &");
}
}
void main(){
while(1){
checktxt();
}
}