#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/select.h>
#include <sys/time.h>
#include <errno.h>
#include <linux/input.h>
int main(void)
{
int buttons_fd
int key_value,i=0,count
struct input_event ev_key
buttons_fd = open("/dev/input/event0", O_RDWR)
if (buttons_fd <0) {
perror("open device buttons")
exit(1)
}
for () {
count = read(buttons_fd,&ev_key,sizeof(struct input_event))
for(i=0i<(int)count/sizeof(struct input_event)i++)
if(EV_KEY==ev_key.type)
printf("type:%d,code:%d,value:%d\n", ev_key.type,ev_key.code-1,ev_key.value)
if(EV_SYN==ev_key.type)
printf("syn event\n\n")
}
close(buttons_fd)
return 0
}
键盘扫描码有两种:一个是make code,也就是键被按下和按住不放时产生
另一种是break code,在键被释放时产生。
每个键都有自己唯一的make code和break code。
提供一个我在Linux下的实现,就是使用ioctl 改变终端I/O模式。
测试程序在“a”健被按下时退出。
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <linux/kd.h>
int main(void)
{
struct termios oldtermios,newtermios
int oldmode
unsigned short key
int i
if((tcgetattr(fileno(stdin),&oldtermios))<0)
{
perror("tcgetaddr error")
exit(1)
}
if((tcgetattr(fileno(stdin),&newtermios))<0)
{
perror("tcgetaddr error")
exit(1)
}
newtermios.c_lflag &= ~(ICANON|ECHO|ISIG)
newtermios.c_iflag = 0
newtermios.c_cc[VMIN] = 0
newtermios.c_cc[VTIME] = 1 //=0延时0 ,=1延时1s
if(tcsetattr(fileno(stdin),TCSAFLUSH,&newtermios))
{
perror("tcsetattr error")
exit(1)
}
ioctl(fileno(stdin),KDGKBMODE,&oldmode)
if(ioctl(fileno(stdin),KDSKBMODE,K_RAW))
{
perror("ioctl error")
exit(1)
}
while(1)
{
if(read(fileno(stdin),&key,sizeof(key))>0)
printf(" key = 0x%x \n",key)
if (key == 0x1e)//key a down , exit.
break
key = 0
}
ioctl(fileno(stdin),KDSKBMODE,oldmode)
tcsetattr(fileno(stdin),TCSANOW,&oldtermios)
return 0
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ma100/archive/2007/02/07/1504270.aspx
以上代码,我在suse liux下,没有成功。原因是 if(ioctl(fileno(stdin),KDSKBMODE,K_RAW)) 没有成功。
参考下面文章:http://www.linuxjournal.com/article/2783,需要弄清楚ioctl对键盘的 *** 作。
LED 测试
蜂鸣器测试
执行lsinput查看按键所对应的输入事件
从lsinput的输出信息,得知按键KEY0 对应的输入事件是 /dev/input/event2 ,因此使用 od 或者 hexdump 命令读取 /dev/input/event2 文件,按下按键后会打印出事件内容:
接执行下面的指令可退出桌面程序。 psplash.sh 这个脚本会关闭以 Q 开头的 Qt 程序。
执行 ts_test 点击 Draw,就可以开始画图。
注意 : ts_calibrate 一般是针对电阻屏校准的。 使用 ts_calibrate
后会在 /etc 目录下生成一个坐标参考文件 pointercal。 如果你是电容屏,并且 /etc 目录下有 pointercal 这个坐标参考文件,请把它删除。否则可能影响触摸坐标上报的数据值。
进入睡眠/熄屏模式:
退出睡眠/亮屏模式:
这样可以像调试串口一样输入登录用户名 root,即可进入系统。这样能输入指令并返回结
果,表明 RS232 串口正常
Memtester 简单介绍
参数说明:
使用文件系统自带的 Memtester 测试工具申请 8MB 内存数量测试做 1 次 DDR 测试。
执行如下指令。
SD 卡写速度测试
SD 卡读速度测试
网速测试
默认开发板的 can 设备是还没有打开的,使用下面的指令打开 can 设备。
服务端:
同理, 客户端也是这样设置:
服务端使用 candump 指令接收来自 can0 的数据
将 SD 卡的第一个分区模拟成 U 盘
说明:使用含 Qt5 的文件系统,启动时插上 RGB 屏幕。
开发板进入系统后,插上鼠标会打印如下信息
ALSA(高级 Linux 声音架构)在 Linux *** 作系统上提供了音频和 MIDI(Musical Instrument
Digital Interface,音乐设备数字化接口)的支持。
amixer 的使用:
alsamixer 则提供一套
图形界面来控制音频设备,可以用键盘方向键来控制增减音量,打开或者关闭等
开发板系统音频输出功能默认是打开的,下面两条指令可不执行。
设置播放音量,执行如下命令,音量的单位是 dB,音量最小为 0,最大为 127。
播放音频文件,执行下面指令
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)