CD Player 0.1

Publicado por Lord Arthas Menethil 29/08/2006

[ Hits: 5.305 ]

Download cdplayer.c




Simples reprodutor de CD feito em C, com NCurses. Ainda tem pouca coisa, só toca o CD, pausa, essas coisas, mas ainda sem controle de volume e tals...

  



Esconder código-fonte

/* Declaração dos includes */
#include <curses.h>
#include <err.h>
#include <fcntl.h>
#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <linux/cdrom.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>

/* Pré-Declaração das funções que serão utilizadas */
void usar(void);
void about(void);
int opt(int ac, char *av[]);
int ligar(void);

/* Variáveis Globais */
const char* const sopt = "ha:p";
const struct option lopt[] = 
{
   { "help", 0, NULL, 'h' },
   { "about", 0, NULL, 'a' },
   { "play", 0, NULL, 'p' },
   { NULL, 0, NULL, 0 }
};
struct cdrom_tochdr header;
struct cdrom_ti inicio;

int main(int argc, char *argv[])
{   
   opt(argc, argv);
   return(0);
}

void usar(void)
{
   fprintf(stderr, "-h or --help = Mostra isso tudo\n");
   fprintf(stderr, "-p or --play = Toca o CD\n");
   fprintf(stderr, "-a or --about = Mostra o about desse prog\n");
}

void about(void)
{
   fprintf(stderr, "DeadlyCorpse CD Player 0.1, by Morte137\n");
   fprintf(stderr, "Codado em C com NCurses\n");
   fprintf(stderr, "Agradecimentos: os de sempre\n");
   fprintf(stderr, "Ajuda grande: Advanced Programming in Linux, GNU LibC Manual\n");
   fprintf(stderr, "Inté\n");
}

int opt(int ac, char *av[])
{
   int nopt;
   bool device;
   nopt = getopt_long(ac, av, sopt, lopt, NULL);
   
   switch(nopt)
   {
      case 'h':
         usar();
      break;
      case 'a':
         about();
      break;
      case 'p':
         ligar();
      break;
      case '?':
         usar();
      break;
      default:
         usar();
      break;
   }
   return(0);
}

int ligar(void)
{
   int cdrom = open("/dev/cdrom", O_RDONLY);
   
   initscr();
   start_color();
   init_pair(1, COLOR_RED, COLOR_BLACK);
   bkgd(COLOR_PAIR(1));
   move(2, 1);
   printw("DeadlyCorpse CD PLayer 0.1");
   move(3, 1);
   printw("Digite q para sair, p para pausar, r para despausar, s para parar totalmente");
   move(5, 1);
   
   while(1)
   {
      char str[50];
      getstr(str);
      
      if(strcmp("q", str) == 0)
      {
         ioctl(cdrom, CDROMSTOP, 0);
         close(cdrom);
         endwin();
         exit(0);
      }
      
      if(strcmp("p", str) == 0)
      {
         ioctl(cdrom, CDROMPAUSE, 0);
      }
      
      if(strcmp("r", str) == 0)
      {
         ioctl(cdrom, CDROMRESUME, 0);
      }
      
      if(strcmp("s", str) == 0)
      {
         ioctl(cdrom, CDROMSTOP, 0);
      }
      
      else
      {
         ioctl(cdrom, CDROMREADTOCHDR, (void *) &header);
         inicio.cdti_trk0 = header.cdth_trk0;
         inicio.cdti_ind0 = 0;
         inicio.cdti_trk1 = header.cdth_trk1;
         inicio.cdti_ind1 = 255;
         ioctl(cdrom, CDROMPLAYTRKIND, (void *) &inicio);
      }
      refresh();
   }
   return(0);
}

Scripts recomendados

Agenda eletrônica feita em C

Arvores AVL - Completo

Função "Partição de Inteiros" Recursiva SEM Tabela Estática em C

Exemplo de sistema especialista usando Inteligência Artificial

Fila, pilha e lista encadeada


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts