CD Player 0.1

Publicado por Lord Arthas Menethil 29/08/2006

[ Hits: 5.693 ]

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

Google Code Jam 2010 - Africa Classification Round A

Agenda eletrônica feita em C

Beer.h

Ponteiro para Ponteiro para Ponteiro

Programa recursivo para obter raiz quadrada


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts