主题 : tiny210 无法通过调节mixer来控制音量 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 72505
精华: 0
发帖: 45
金钱: 230 两
威望: 46 点
综合积分: 90 分
注册时间: 2012-06-23
最后登录: 2020-05-06
楼主  发表于: 2012-10-23 18:10

 tiny210 无法通过调节mixer来控制音量

    用了以前一个在2440上的音量调节程序,无法对tiny210的音量进行调节,请问是否是210的驱动架构有新的变化?要使用新的接口进行音量的控制?
下面的程序在2440里面是可以直接控制音量的!
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/soundcard.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    int MIX_FD;
    int iLeft = 0;
    int iRight = 0;
    int iLevel0 ,iLevel;
     int ret;

    if (argc < 2) {
        printf("Please add a file name and the volume level such as: ./volume 80\n");
        exit(0);
    }

    iLeft = iRight = atoi(argv[1]);

    iLevel = (iRight << 8) + iLeft;

    MIX_FD= open("/dev/mixer", O_WRONLY);
    if (MIX_FD == -1) {
        perror("Error:open /dev/mixer error");
        exit(1);
    }

    ret = ioctl(MIX_FD, MIXER_WRITE(SOUND_MIXER_VOLUME), &iLevel);     /* 调整大小 */
    printf("ioctl ret = %d \n",ret);
    close(MIX_FD);

    return 0;
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2012-10-24 10:09
看程序是使用的OSS的接口,而tiny210的wm8960是ALSA接口的驱动,因此无法正常工作
可访问 www.alsa-project.org 获得ALSA更详细的信息