CD Player 0.1

Publicado por Lord Arthas Menethil 29/08/2006

[ Hits: 5.689 ]

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

Gerador de number list v2

Um Classico exercicio de Lógica de Programação

Algoritmo de ordenação Quick Sort

Semi LS

Sistema básico de cadastro usando Listas Encadeadas


  

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