主题 : 分享一下“Mini2440自动背光程序” 复制链接 | 浏览器收藏 | 打印
:)
级别: 骑士
UID: 61588
精华: 5
发帖: 248
金钱: 1500 两
威望: 300 点
贡献值: 5 点
综合积分: 596 分
注册时间: 2012-01-02
最后登录: 2018-03-05
楼主  发表于: 2012-07-29 09:17

 分享一下“Mini2440自动背光程序”

更多详情请看:Mini2440之LCD自动背光程序设计

/***************************************************************************
    (C) by kangear ^_^
    email : kangear@163.com

***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <stdio.h> //sterr sscanf(存储的数据,格式控制字符串,选择性设定字符串)
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/fs.h>
#include <errno.h>
#include <string.h>

#include <signal.h>

static void
sig_alrm(int signo)
{
    char buffer2[1] = {'0'};
    int bl_fd = open("/dev/backlight",1);
    if(bl_fd<0){
        perror("open backlight device:");
}
    write(bl_fd,buffer2,1);
    close(bl_fd);

}
void backlight_wr()
{
    char buffer2[1] = {'1'};
    int bl_fd = open("/dev/backlight",1);
    if(bl_fd<0){
        perror("open backlight device:");
    }
    write(bl_fd,buffer2,1);
    close(bl_fd);
}

int main(void)
{
    fprintf(stderr, "press Ctrl-C to stop\n");        //相当于printf;
    int fd = open("/dev/adc", 2); //文件编程中的 文件打开
    if (fd < 0) //文件打开失败
    {
        perror("open backlight device:"); //错误信息打印出来
        return 1;
    }
    signal(SIGALRM,sig_alrm);
    alarm(5);//定义一数组
    for(;;)
      {
        char buffer[30];
        int len = read(fd, buffer, sizeof buffer -1);        //文件编程中的 文件读 成功返回长度
        if (len > 0) {         //读成功
            buffer[len] = '\0';             //在末尾添加“\0”结束符
            int value = -1;
            sscanf(buffer, "%d", &value);             //将得到的信息中提取整型数
            printf("backlight Value: %d\n", value);             //打印 printf("backlight Value: %d\n", value);             //打印
            if(value==-1)
            {
                backlight_wr();
                alarm(5);
            }
}
        else         //读失败
            {
            perror("read backlight device:");             //输出错误信息
            return 1;
          }
        usleep(50* 1000);         //和sleep()功能一样不过是μ秒(相当于睡眠0.05秒)
     }
    close(fd); //文件编程中的 文件关闭
}

/*把 signal(SIGALRM,sig_alrm);
            alarm(5);//定义一数组 放到循环之前解决了,首次不自动关背光的问题!
不过程序显得有点长,0.3解决这个问题*/
:)
级别: 骑士
UID: 61588
精华: 5
发帖: 248
金钱: 1500 两
威望: 300 点
贡献值: 5 点
综合积分: 596 分
注册时间: 2012-01-02
最后登录: 2018-03-05
1楼  发表于: 2012-07-29 09:18
编译过后可以直接在mini2440下运行
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
贡献值: 27 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
2楼  发表于: 2012-07-29 10:11
多谢分享,继续努力
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 66385
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2012-03-29
最后登录: 2012-08-30
3楼  发表于: 2012-08-01 11:02
多谢分享!
级别: 新手上路
UID: 76651
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2012-08-27
最后登录: 2017-07-10
4楼  发表于: 2012-08-27 23:35
niu ren a
级别: 新手上路
UID: 75525
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2012-08-09
最后登录: 2012-12-14
5楼  发表于: 2012-10-31 21:49
你好:
请教你背光的问题。mini6410
开发板背光控制,当屏幕变黑之后,点击了一下屏幕,屏幕恢复,点击屏幕的任何地方,屏幕都可以恢复光亮。这个点击任何地方,是怎么实现的?我的思路是
mousePressEvent(QMouseEvent *event)
{
system("echo 127 > /dev/backlight-1wire");
}
就是用鼠标点击的时候,就可以恢复亮度。
但是现在的问题是,触摸不灵敏,很迟钝,需要点击很多次,才会有作用。
[ 此帖被suzhenwei在2012-10-31 21:57重新编辑 ]