I.MX6 linux eGalaxTouch 自动获取设备节点

                       I.MX6 linux eGalaxTouch 自动获取设备节点

                        \\\\\\\\\\\\\\-*- 目录 -*-/////////////
                        |  一. 需求:
                        |  二. /proc/bus/input/devices 内容:
                        |  三. 解决方法:
                        |  四. 实际应用:
                        --------------------------------------

一. 需求:
    获取eGalaxTouch的输入设备节点

二. /proc/bus/input/devices 内容:
    [email protected] /proc/bus/input$ cat /proc/bus/input/devices
    I: Bus=0019 Vendor=0001 Product=0001 Version=0100
    N: Name="gpio-keys"
    P: Phys=gpio-keys/input0
    S: Sysfs=/devices/platform/gpio-keys/input/input0
    U: Uniq=
    H: Handlers=kbd event0
    B: PROP=0
    B: EV=3
    B: KEY=100000 0 0 0

    I: Bus=0003 Vendor=0eef Product=7201 Version=0210
    N: Name="eGalax Inc. eGalaxTouch EXC7200-0031v1000"
    P: Phys=usb-fsl-ehci.1-1.3/input0
    S: Sysfs=/devices/platform/fsl-ehci.1/usb2/2-1/2-1.3/2-1.3:1.0/input/input1
    U: Uniq=
    H: Handlers=cpufreq_interactive
    B: PROP=0
    B: EV=1b
    B: KEY=421 0 30001 0 0 0 0 0 0 0 0
    B: ABS=100 3f
    B: MSC=10

    I: Bus=0006 Vendor=0eef Product=0020 Version=0001
    N: Name="eGalaxTouch Virtual Device for Multi"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input2
    U: Uniq=
    H: Handlers=cpufreq_interactive event1
    B: PROP=2
    B: EV=b
    B: KEY=400 0 0 0 0 0 0 0 0 0 0
    B: ABS=6608000 1000003

    I: Bus=0006 Vendor=0eef Product=0010 Version=0001
    N: Name="eGalaxTouch Virtual Device for Single"
    P: Phys=
    S: Sysfs=/devices/virtual/input/input3
    U: Uniq=
    H: Handlers=event2
    B: PROP=2
    B: EV=b
    B: KEY=30000 0 0 0 0 0 0 0 0
    B: ABS=3

    [email protected] /proc/bus/input$ 

三. 解决方法:
    1. 采用shell脚本的进行解决;
    2. shell脚本如下:
        inputCheckLine=`cat /proc/bus/input/devices | grep -n "Vendor=0eef" | grep "Product=0020 Version=0001"| awk -F: ‘{print $1}‘`
        touchEvent=`sed -n "$((${inputCheckLine}+5))p" /proc/bus/input/devices | grep -o "event."`

四. 实际应用:
    ......
    while [ -z $touchEvent ]
    do
        inputCheckLine=`cat /proc/bus/input/devices | grep -n "Vendor=0eef" | grep "Product=0020 Version=0001"| awk -F: ‘{print $1}‘`
        touchEvent=`sed -n "$((${inputCheckLine}+5))p" /proc/bus/input/devices | grep -o "event."`
        echo "please hang up USB TOUCH !"
        usleep 10
    done
    ......
    export TSLIB_TSDEVICE=/dev/input/${touchEvent}
    export QWS_MOUSE_PROTO=tslib:/dev/input/${touchEvent}
    ......
时间: 2024-10-09 23:25:26

I.MX6 linux eGalaxTouch 自动获取设备节点的相关文章

【Linux驱动】自动创建设备节点

开始学习驱动的时候,是将驱动程序编译成模块然后用mknod命令手动建立设备节点以提供给应用程序调用.这对于刚开始调试驱动程序的时候常用的一种方法.但是,当有种需要必须在系统启动的时候就将驱动程序就绪,来供应用层程序调用.这时就不能再手动的建立设备节点了,而必须自动的创建设备节点(不需要人为的操作). ★注册类 注册类的目的是为了使mdev可以在/dev/目录下建立设备节点. 首先要定义一个类,利用struct class结构体.这个结构体定义在头文件include/linux/device.h中

linux驱动开发(三) 字符设备驱动框架(自动创建设备节点)

代码如下 #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/cdev.h> #include <linux/fs.h> #include <linux/device.h> int demo_major = 250; int demo_minor = 0; int demo_count = 1; stru

自动创建设备节点class_create 和device_create

刚开始学习驱动的时候,每次都需要mknod /dev/timer c 500 0 这样手动去创建一个设备节点:实际上Linux内核提供一组函数,可以用来在驱动模块加载的时候自动在/dev目录下创建相应的设备节点,并在下载的时候删该节点. device_create(struct class *class, struct device *parent,dev_t devt, void *drvdata, const char *fmt, ...)和device_destroy(struct cla

如何自动创建设备节点

创建设备文件的方法: 第一种是使用mknod手工创建:mknod filename type major minor 第二种是自动创建设备节点:利用udev(mdev)来实现设备文件的自动创建,首先应保证支持udev(嵌入式系统用mdev),由busybox配置. udev介绍 udev 运行在用户模式,而非内核中.udev 的初始化脚本在系统启动时创建设备节点,并且当插入新设备--加入驱动模块--在sysfs上注册新的数据后,udev会创新新的设备节点. udev 是一个工作在用户空间的工具,

platform型设备在/dev目录下自动创建设备节点的分析【转】

转自:http://blog.csdn.net/rockrockwu/article/details/7357648 系统启动过程中platform设备.驱动注册完毕,为什么在/dev目录下就自动创建好设备节点了? 在/dev目录自动创建设备节点可以通过class_create(),然后再device_create().但是在跟踪 内核platform注册过程中可以发现,其实这里面并未调用上诉两个函数,那么platform注册后 如何在/dev目录下创建设备文件节点? [cpp] view pl

Linux设备驱动实现自动创建设备节点

#include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/device.h> #include <linux/cdev.h> #include <linux/fs.h> #include <linux/ioctl.h> #define DRIVERNAME "xxx" #defi

一步一步学习Linux驱动之自动创建设备节点

<span style="font-size:12px;">extern struct device *device_create(struct class *cls, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...) __attribute__((format(printf, 5, 6)));</span> 函数功能: 函数device_create()用于动态的建立

linux如何自动获取ip地址

第一步:激活网卡 系统装好后默认的网卡是eth0,用下面的命令将这块网卡激活. # ifconfig eth0 up 第二步:设置网卡进入系统时启动 想要每次开机就可以自动获取IP地址上网,就要设置网络服务在系统启动时也启动.Linux有一点与windows不同的是很多服务默认是停止的,而且你在某次使用该服务时启动这个服务,但是没设置它为默认启动,则下次进入系统这个服务依然是停止的.下面是设置网络服务在系统启动时也启动的方法. 使用chkconfig命令让网络服务在系统启动级别是2345时默认启

linux c 编程 ------ 通过设备节点调用驱动

驱动程序如下,加载驱动后,会在/dev文件夹下生成一个文件hello_device_node,是此驱动的设备节点 #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/miscdevice.h> #include <linux/fs.h> #define DRIVER_NAME "hello