C语言触摸屏校准代码:计算距离实现及判断
C语言触摸屏校准代码:计算距离实现及判断
这段代码片段来自一个触摸屏校准函数 TP_Adjust,它负责计算三组校准点之间的距离,并根据距离比值来判断校准结果是否合格。
该函数使用 pos_temp 数组存储四个校准点的坐标,TP_ADJDIS_TBL 是一个 3x4 的数组,存储三组点的下标,用于计算距离。
具体代码如下:
//校准点参数:(0,1)与(2,3),(0,2)与(1,3),(1,2)与(0,3),这三组点的距离
const u8 TP_ADJDIS_TBL[3][4]={{0,1,2,3},{0,2,1,3},{1,2,0,3}};//校准距离计算表
//触摸屏校准代码
//得到四个校准参数
void TP_Adjust(void)
{
// ... (其他代码)
for(cnt=0;cnt<3;cnt++)//计算三组点的距离是否在允许范围内?
{
tem1=abs(pos_temp[TP_ADJDIS_TBL[cnt][0]][0]-pos_temp[TP_ADJDIS_TBL[cnt][1]][0]);//x1-x2/x1-x3/x2-x3
tem2=abs(pos_temp[TP_ADJDIS_TBL[cnt][0]][1]-pos_temp[TP_ADJDIS_TBL[cnt][1]][1]);//y1-y2/y1-y3/y2-y3
tem1*=tem1; tem2*=tem2;
d1=sqrt(tem1+tem2);//得到两点之间的距离
tem1=abs(pos_temp[TP_ADJDIS_TBL[cnt][2]][0]-pos_temp[TP_ADJDIS_TBL[cnt][3]][0]);//x3-x4/x2-x4/x1-x4
tem2=abs(pos_temp[TP_ADJDIS_TBL[cnt][2]][1]-pos_temp[TP_ADJDIS_TBL[cnt][3]][1]);//y3-y4/y2-y4/y1-y4
tem1*=tem1; tem2*=tem2;
d2=sqrt(tem1+tem2);//得到两点之间的距离
fac=(float)d1/d2;
if(fac<0.95||fac>1.05||d1==0||d2==0)//不合格
{
// ... (处理不合格情况)
}
}
// ... (其他代码)
}
计算逻辑:
- 循环遍历
TP_ADJDIS_TBL数组中的三组点下标。 - 对于每组点,计算横纵坐标差值,并分别求平方和。
- 对平方和开方,得到两点之间的距离
d1和d2。 - 计算距离比值
fac = d1 / d2。 - 判断
fac是否在允许范围内 (0.95~1.05) 且d1和d2不为 0。 - 如果不合格,则重新校准;否则,校准成功。
这段代码示例了如何在 C 语言中使用距离计算方法来判断触摸屏校准结果是否合格。通过理解代码逻辑,可以帮助你更好地进行触摸屏校准算法的设计和实现。
原文地址: https://www.cveoy.top/t/topic/ne6v 著作权归作者所有。请勿转载和采集!