|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
这几天有个bug缠绕了我半天,于是就有了本文章。
: B% E& `$ d7 ?+ P) x7 G( x/ S: x! q+ E+ Y" A! I2 }# e
触摸屏因为加了个笔记本键盘后不能用了,摘掉笔记本键盘后,触摸屏又可以用了,真是见鬼了。4 m4 j- q2 W5 X4 {1 K) i
2 b; c9 {7 n; `7 [/ C6 S稍微研究一看,原来是加了笔记本键盘后导致TP驱动的设备节点改变了,比如说,以前是event4,加了笔记本键盘后event6,导致应用程序使用的设备节点跟TP驱动不匹配。
1 t+ S! U* I! N! ~+ @5 d) Z% E* t: d+ }3 F! I0 \
于是,我就纳闷了,以前的方法是在编译的时候写死了,比如配置为4了,运行的时候就是设置为4,不变了,其实这是有一定风险的,例如刚才说的例子。那么,怎么改呢?能不能在允许的时候判断出TP设备节点是哪个呢?答案是可以的。
8 h0 v/ f$ m1 R5 ?8 c, h6 ?- x6 R. D. S% A2 n
在添加自动获取TP的event_num方案时,遇到了一点点问题:
& V" S5 l9 i- S' |% U5 t& ]0 z$ }7 t+ e6 Y: _9 Q
一、在遍历设备节点时候,怎么记录下event_num,C语言很简单啊,i++,但是shell里面不能这么做。
/ Y/ x! s" u* M' e* d4 ^; D2 i- S( N) Q2 a1 K, V% a* {2 Q Z
二、怎么截获字符串的前几个字符?9 |# u, L3 {+ N7 _3 P2 y
$ H( n, [. y' X% l" n% ^- ~! x
- u5 d- m+ ]! V/ _8 ^5 [' B" F$ p/ {/ n* [
先解决第一个问题,在网上搜了一下,发现有个人写的很好,这里引用一下:
7 X* ]& ^+ m/ t
, m: U$ e, k2 ?& N# [. S. Wa=13 {& @# ?- l6 T# }* c3 s; T
a=$(($a+1))
7 F. J! G: `# w% T; y" J pa=$[$a+1]8 u( F7 I8 Z9 ?, ?' s# L' k$ N% `# k
a=`expr $a + 1`
5 M# _( k# K( llet a++2 I- J8 |* h+ c5 k H! [) Q
let a+=1) P, b' d7 m1 C. N# P
这几种方法都可以实现i++操作,其中我在实际中使用了 let a++# [2 Y a! e& G9 n$ [
- u( V& ]2 ^4 T! i! S: K3 ]
7 x. u5 c$ }2 [/ f/ m
第二个问题的方法其实也很多,我这里只说一种容易记住的:, ]; ?/ r! j8 v3 Z. a
1 }# ^: L% Q: [3 w6 C; h( s1 A例如:有个字符串变量string=abcdefgh,我需要截取前面4个字符,那么shell应该怎么实现?
/ |7 F% v+ Y- x4 v( q
) c5 r% L3 f8 }& m- E" }# z
& c/ [5 K& T- q# tstring="abcdefgh"
% ^5 g$ e8 ?; G( {1 L: k2 Kcut_string=`echo $string|cut -c 1-4`( K' n* {& d% O9 q- [0 m S
结果:cut_string=abcd0 e& e; k* P) S
) m. R7 ], f: s, C' ^
以上2个问题是在实际解决问题的时候遇到的,虽然是不起眼的技术点,慢慢积累还是有用的。
4 M8 N' X7 S/ `- s
7 L: D2 L2 z; I$ W1 i! ~/ i* {0 O古语云:不积跬步,无以至千里;不积小流,无以成江海。9 t+ i; T& n+ M7 X
2 E3 Z* l& u w+ H" _2 `5 X3 A
|
|