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)//不合格
        {
            // ... (处理不合格情况)
        }
    }
    // ... (其他代码)
}

计算逻辑:

  1. 循环遍历 TP_ADJDIS_TBL 数组中的三组点下标。
  2. 对于每组点,计算横纵坐标差值,并分别求平方和。
  3. 对平方和开方,得到两点之间的距离 d1d2
  4. 计算距离比值 fac = d1 / d2
  5. 判断 fac 是否在允许范围内 (0.95~1.05) 且 d1d2 不为 0。
  6. 如果不合格,则重新校准;否则,校准成功。

这段代码示例了如何在 C 语言中使用距离计算方法来判断触摸屏校准结果是否合格。通过理解代码逻辑,可以帮助你更好地进行触摸屏校准算法的设计和实现。

C语言触摸屏校准代码:计算距离实现及判断

原文地址: https://www.cveoy.top/t/topic/ne6v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录