tslib 主要做了兩件事,座標系對映和按鍵的濾波。
螢幕的校準主要原理是兩個座標系的對映,通過平移,旋轉,縮放。
即原座標系的座標點左乘,平移矩陣,旋轉矩陣,縮放矩陣,可以得到校準後的矩陣。
由此可以推導出方程組:
x_ = ax + by + c
y_ = dx +ey + f
只要求出abc和defi就可以得出兩個座標系的對映關係。
tslib用的是5點校準,推倒公式如下:
x_ = a*x + b*y + c
x_*x = a*x*x + b*y*x + c*x
x_*y = a*x*y + b*y *y+ c*y
y_ = d*x +e*y + f
y_*x = d*x*x +e*y*x + f*x
y_*y = d*x*y +e*y*y + f*y
ts_calibration.c
typedef struct calibration;
x和y用來存觸控螢幕取樣的五個點座標(getxy函式獲取,讀取觸控螢幕裝置而來)
xfb和yfb用來存lcd的五個座標點(即lcd上的五個十字架,座標已知)
a[0..2]對應方程組的a b c(根據克萊姆法則計算而來)
a[3...5]對應方程組的d e f(根據克萊姆法則計算而來)
a[6] a b c d e f 的放大係數
使用ts calibrate校準觸控螢幕
使用ts lib包自帶的ts calibrate校準觸控螢幕非常簡單實用,但在基於xsever的gui應用環境下,有兩個問題存在 1.校準後必須重新啟動x,應用端才能生效。這樣處理使用者肯定不能接受,因為啟動一次機器畢竟耗時。2.在使用ts calibrate校準觸控螢幕時,要觸控5個點,這時如果g...
使用ts calibrate校準觸控螢幕
使用ts lib包自帶的ts calibrate校準觸控螢幕非常簡單實用,但在基於xsever的gui應用環境下,有兩個問題存在 1.校準後必須重新啟動x,應用端才能生效。這樣處理使用者肯定不能接受,因為啟動一次機器畢竟耗時。2.在使用ts calibrate校準觸控螢幕時,要觸控5個點,這時如果g...
使用ts calibrate校準觸控螢幕
使用ts lib包自帶的ts calibrate校準觸控螢幕非常簡單實用,但在基於xsever的gui應用環境下,有兩個問題存在 1.校準後必須重新啟動x,應用端才能生效。這樣處理使用者肯定不能接受,因為啟動一次機器畢竟耗時。2.在使用ts calibrate校準觸控螢幕時,要觸控5個點,這時如果g...