当前位置: 技术问答>linux和unix
有触摸屏驱动程序源代码,怎么写一个命令行的程序测试驱动程序?
来源: 互联网 发布时间:2015-06-21
本文导语: 驱动中的read函数如下: struct ts_event { u16 pressure; u16 x; u16 y; u16 pad; struct timeval stamp; }; static ssize_t ucb1x00_ts_read(struct file *filp, char *buffer, size_t count, loff_t *ppos) { DECLARE_WAITQUEUE(wait, current); struct ucb1x00_ts *...
驱动中的read函数如下:
struct ts_event {
u16 pressure;
u16 x;
u16 y;
u16 pad;
struct timeval stamp;
};
static ssize_t
ucb1x00_ts_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)
{
DECLARE_WAITQUEUE(wait, current);
struct ucb1x00_ts *ts = filp->private_data;
char *ptr = buffer;
int err = 0;
add_wait_queue(&ts->read_wait, &wait);
while (count >= sizeof(struct ts_event)) {
err = -ERESTARTSYS;
if (signal_pending(current))
break;
if (ucb1x00_ts_evt_pending(ts)) {
struct ts_event *evt = ucb1x00_ts_evt_get(ts);
printk("ucb1x00_ts: x = %d y = %d n", evt->x, evt->y);
err = copy_to_user(ptr, evt, sizeof(struct ts_event));
ucb1x00_ts_evt_pull(ts);
if (err)
break;
ptr += sizeof(struct ts_event);
count -= sizeof(struct ts_event);
continue;
}
set_current_state(TASK_INTERRUPTIBLE);
err = -EAGAIN;
if (filp->f_flags & O_NONBLOCK)
break;
schedule();
}
current->state = TASK_RUNNING;
remove_wait_queue(&ts->read_wait, &wait);
return ptr == buffer ? err : ptr - buffer;
}
设备文件是:/dev/touchscreen/ucb1x00
如果需要更详细的代码可以访问:http://its.letfree.com/ts.txt
大虾快帮帮我,毕业设计快没时间了。3x!!!!
struct ts_event {
u16 pressure;
u16 x;
u16 y;
u16 pad;
struct timeval stamp;
};
static ssize_t
ucb1x00_ts_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)
{
DECLARE_WAITQUEUE(wait, current);
struct ucb1x00_ts *ts = filp->private_data;
char *ptr = buffer;
int err = 0;
add_wait_queue(&ts->read_wait, &wait);
while (count >= sizeof(struct ts_event)) {
err = -ERESTARTSYS;
if (signal_pending(current))
break;
if (ucb1x00_ts_evt_pending(ts)) {
struct ts_event *evt = ucb1x00_ts_evt_get(ts);
printk("ucb1x00_ts: x = %d y = %d n", evt->x, evt->y);
err = copy_to_user(ptr, evt, sizeof(struct ts_event));
ucb1x00_ts_evt_pull(ts);
if (err)
break;
ptr += sizeof(struct ts_event);
count -= sizeof(struct ts_event);
continue;
}
set_current_state(TASK_INTERRUPTIBLE);
err = -EAGAIN;
if (filp->f_flags & O_NONBLOCK)
break;
schedule();
}
current->state = TASK_RUNNING;
remove_wait_queue(&ts->read_wait, &wait);
return ptr == buffer ? err : ptr - buffer;
}
设备文件是:/dev/touchscreen/ucb1x00
如果需要更详细的代码可以访问:http://its.letfree.com/ts.txt
大虾快帮帮我,毕业设计快没时间了。3x!!!!
|
直接打开/dev/touchscreen/ucb1x00获得fd,然后使用select()等到fd可读时就读取一个
struct ts_event 即可。
struct ts_event 即可。
|
struct timeval我想应该在time.h中定义
struct ts_event的接收:只要当作普通结构体处理就可以了!
struct ts_event的接收:只要当作普通结构体处理就可以了!
|
struct ts_event在你的驱动程序里已经定义了,
如果做你的驱动的应用开发的话,
你在驱动里定义的一些变量就应该导出,
你的应用程序应该包含驱动的头文件
如果做你的驱动的应用开发的话,
你在驱动里定义的一些变量就应该导出,
你的应用程序应该包含驱动的头文件