给出的有关将 ThinkPad 的倾斜度用于游戏、显示工具的例子。或者直接跳过这部分内容,将 Threshold 变量设置为 15,这样您使劲踢一脚 ThinkPad,它就会自动重启了。
knockAge.pl 代码
历史和策略
Jeff Molofee 所编写的 hdaps-gl.c 是 knockAge.pl 代码的基础。Hdaps-gl.c 是一个非常好的展示程序,可以展示如何使用倾斜传感器来实时地显示有关 ThinkPad 的方向的信息。二者之间的区别是本例将时间上隔离的事件组织在一起创建了敲打事件,同时提供了相关的代码来创建并监听敲打事件序列。
参数配置
下面让我们来使用对时间和传感器敏感的一些参数来启动 knockAge.pl:
清单 1. 主程序参数
require 'sys/syscall.ph'; # for subsecond timing
my $option = $ARGV[0] || ""; # simple option handling
# filename for hdaps sensor reads
my $hdapsFN = "/sys/devices/platform/hdaps/position";
my $UPDATE_THRESHOLD = 4; # threshold of force that indicates a knock
my $INTERVAL_THRESHOLD = 100000; # microseconds of time required between knock
# events
my $SLEEP_INTERVAL = 0.01; # time to pause between hdaps reads
my $MAX_TIMEOUT_LENGTH = 4; # maximum length in seconds of knock pattern
# length
my $MAX_KNOCK_DEV = 100000; # maximum acceptable deviation between recorded
# pattern values and knocking values
my $LISTEN_TIMEOUT = 2; # timeout value in seconds between knock
# events when in listening mode
|
这些变量及其注释都非常简单。它们的用法和配置选项在本文后面部分会进行解释。下面是其余的一些全局变量及其描述。
清单 2. 敲打模式参数
my @baseKnocks = (); # contains knock intervals currently entered my %knockHash = (); # contains knock patterns, associated commands my $prevInterval = 0; # previous interval of time my $knockCount = 0; # current number of knocks detected my $restX = 0; # `resting' positiong of X axis accelerometer my $restY = 0; # `resting' positiong of Y axis accelerometer my $currX = 0; # current position of X axis accelerometer my $currY = 0; # current position of Y axis accelerometer my $lastX = 0; # most recent position of X axis accelerometer my $lastY = 0; # most recent position of Y axis accelerometer my $startTime = 0; # to manage timeout intervals my $currTime = 0; # to manage timeout intervals my $timeOut = 0; # perpetual loop variable my $knockAge = 0; # count of knocks to cycle time interval |
在我们的子程序清单中首先是一个简单的逻辑块,用来检查是否有加速器可读:
清单 3. 检查加速器的子程序
sub checkAccelerometer() {
my $ret;
$ret = readPosition ();
if( $ret ){
print "no accelerometer data available - tis bork ed\n";
exit(1);
}
}#checkAccelerometer
|
最新相关文章
发表评论