主题 : 基于控制台的音量调节程序 复制链接 | 浏览器收藏 | 打印
这个阶段正是我事业的上升期,我怎么能走得开呢?
级别: 精灵王
UID: 3197
精华: 3
发帖: 770
金钱: 6995 两
威望: 5398 点
综合积分: 1600 分
注册时间: 2008-12-30
最后登录: 2010-12-31
楼主  发表于: 2009-04-09 11:07

 基于控制台的音量调节程序

一个网友基于mini2440所做:

有控制台模式的MP3播放软件madplay但是没有控制台模式的音量调节软件我
自己无聊写了一个

代码如下:

#include <sys/ioctl.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/soundcard.h>
int str2int(unsigned char *p)//字符->整型
{
 int t;
 t=0;
 while(*p)
 {
  if(*p>='0'&&*p<='9')
  {
   t*=10;
   t+=*p-'0';
  }
   p++;
 }
 return t;
}
int main(int argc,char *argv[])
{
 int mixer_fd,vol,vol1,vol2;
 vol=100;
 if(argc==2) vol=str2int(argv[1]);
 if(vol>100) vol=100;
 if((mixer_fd=open("/dev/mixer",O_RDONLY,0))==-1)
 {
  perror("mixer");
  exit(1);
 }
 ioctl(mixer_fd, MIXER_READ(SOUND_MIXER_VOLUME),&vol1);
 vol1/=0x101;
 while(1)
 {
  if(vol1>vol) vol1--;
  if(vol1<vol) vol1++;
  vol2=vol1*0x101;
  ioctl(mixer_fd, MIXER_WRITE(SOUND_MIXER_VOLUME),&vol2);
  //usleep(1000);
  if(vol1==vol) break;
 }
 printf("vol:%d\n",vol1);
 close(mixer_fd);
 return 0;
}


我没有测试过,有兴趣的自己玩玩了。