微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 应用调试-----输入模拟器之编写测试模拟功能

应用调试-----输入模拟器之编写测试模拟功能

时间:11-21 来源:互联网 点击:

}

int main(int argc, char **argv)

{

int fd;

int fd_data;

int buf[100];

int len;

if (argc != 2 && argc != 3)

{

print_usage(argv[0]);

return -1;

}

fd = open("/dev/input_emu", O_RDWR);

if (fd " 0)

{

printf("cant open /dev/input_emu\n");

return -1;

}

if (strcmp(argv[1], "replay") == 0)

{

ioctl(fd, INPUT_REPLAY);

}

else if (strcmp(argv[1], "write") == 0)

{

if (argc != 3)

{

print_usage(argv[0]);

return -1;

}

fd_data = open(argv[2], O_RDONLY);

if (fd_data " 0)

{

printf("cant open %s\n", argv[2]);

return -1;

}

while (1)

{

len = read(fd_data, buf, 100);

if (len == 0)

{

printf("wite ok\n");

break;

}

else

{

write(fd, buf, len);

}

}

}

else if (strcmp(argv[1], "tag") == 0)

{

if (argc != 3)

{

print_usage(argv[0]);

return -1;

}

ioctl(fd, INPUT_TAG, argv[2]);

}

else

{

print_usage(argv[0]);

return -1;

}

return 0;

}

================================================================

解析:

在触摸屏按下后上报事件是把按下时间、类型等打印到制定文件中,如/proc/mymsg中,然后再从/proc/mymsg中的数据还原回来重新上报显示。

在:触摸屏驱动程序(输入子系统)实验的基础上进行以下命令测试:

export TSLIB_TSDEVICE=/dev/event0

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/lib/ts

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

insmod mymsg.ko //加载自己写的myprintk驱动程序

insmod touch_emulate.ko //触摸屏驱动程序

./emulate_test tag 100ask //给保存在mymsg文件中的触摸数据加标记

cat /proc/mymsg //查看mymsg文件内容

ts_test //测试触摸屏指令,指令此命令需要加载了触摸屏驱动程序以后才有效

随意的画线

cp /proc/mymsg /ts2.txt //拷贝完成以后按ctrl+c键才能退出来

sudo chmod 777 ts.txt //到服务器上执行该指令

./emulate_test write /ts.txt

ts_test & //用ps命令查看运行的ts_test 进程,可以用:kill -9 +进程号,指令来杀死进程

./emulate_test replay

注意:当程序在执行replay_get_line(line);函数获取一行数据出错时,始终返回有数据存在,那么del_timer(&replay_timer);函数就得不到执行,当卸载驱动重新加载新的驱动时,老的定时器变量依然存在,执行到add_timer(&replay_timer);系统会报错如下,只有系统复位才能解决问题。

kernel BUG at include/linux/timer.h:153!

Unable to handle kernel NULL pointer dereference at virtual address 0000000 pgd=c3f50000


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top