input:ABS_DISTANCE上报空指针错误


在probe函数中设置事件类型EV_ABS和支持的事件码ABS_DISTANCE:

input_set_capability(input_dev, EV_ABS, ABS_DISTANCE);
然后在工作队列里上报传感器的数据:

input_report_abs(dt->input, ABS_DISTANCE, 1);
input_sync(dt->input);

运行程序,每次到上报时候就会出现空指针错误,内核就跑飞了。

解决办法:

因为ABS_DISTANCE需要使用下面的函数设置相关的参数,如距离的最小,最大值等。才能正常上报。
添加如下内容在probe函数中。

input_set_abs_params(input_dev, ABS_DISTANCE, 0, 1, 0, 0);

函数定义如下:

void input_set_abs_params(struct input_dev *dev, unsigned int axis,
<span>			</span>  int min, int max, int fuzz, int flat)
{
<span>	</span>struct input_absinfo *absinfo;


<span>	</span>input_alloc_absinfo(dev);
<span>	</span>if (!dev->absinfo)
<span>		</span>return;


<span>	</span>absinfo = &dev->absinfo[axis];
<span>	</span>absinfo->minimum = min;
<span>	</span>absinfo->maximum = max;
<span>	</span>absinfo->fuzz = fuzz;
<span>	</span>absinfo->flat = flat;


<span>	</span>dev->absbit[BIT_WORD(axis)] |= BIT_MASK(axis);
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
use global use component_prameter use constant use time_control use LOCAL_RESM implicit none character*20 :: Para_Inlst01,Para_Inlst02,Para_Inlst03 character*20 :: Para_Inlst04,Para_Inlst05,Para_Inlst06,Para_Inlst07 real*8 :: DX_3DV_Input(100),DY_3DV_Input(100),DZ_3DV_Input(100) real*8 :: VELX_3DV_Input,VELY_3DV_Input,VELZ_3DV_Input real*8 :: ANGX_3DV_Input,ANGY_3DV_Input,ANGZ_3DV_Input integer :: CV_Structure_x,CV_Structure_y,CV_Structure_z real*8 :: Gama_CV,Gama_X,Gama_Y,Gama_z integer :: AQCVIN_x,AQCVIN_y,AQCVIN_z real*8 :: AQQ_Input,AQT_Input, AQH_Input character*20 :: INDEX_ISIDE_3DCV, INDEX_OSIDE_3DCV real*8 temp_tterm integer:: N3DV, I3DV integer:: I3DJX, I3DJY, I3DJZ integer:: NX_3DJX,NY_3DJX,NZ_3DJX integer:: NX_3DJY,NY_3DJY,NZ_3DJY integer:: NX_3DJZ,NY_3DJZ,NZ_3DJZ integer:: INCV_X,INCV_Y,INCV_Z integer:: OUTCV_X,OUTCV_Y,OUTCV_Z integer:: Nin_3Dpool,Nout_3Dpool integer:: In_3DPool_X(1000), In_3DPool_Y(1000),In_3DPool_Z(1000) integer:: Out_3DPool_X(1000), Out_3DPool_Y(1000),Out_3DPool_Z(1000) integer:: In_3DV,Out_3DV character*20 :: Connect_InName,Connect_OutName character*20 :: InName_Con(1000),OutName_Con(1000) character*20 :: Index_Oside_3DCV_INPUT(1000), Index_Iside_3DCV_INPUT(1000) integer:: IO_3DPool_X(1000), IO_3DPool_Y(1000), IO_3DPool_Z(1000) character*20 :: Index_IOside_3DCV_INPUT(1000), IOName_Con(1000) integer:: IO_3DV integer:: IO_Cv_X,IO_Cv_Y,IO_Cv_Z ,NIO_3Dpool character*20 :: Index_IOside_3DCV, Connect_IOName integer:: NX_3DV_Input,NY_3DV_Input,NZ_3DV_Input integer:: NTOTAL_3DV,NTOTAL_3DJX,NTOTAL_3DJY,NTOTAL_3DJZ integer:: IZ_3DV ,IX_3DV ,IY_3DV integer:: IZ_3DJX ,IX_3DJX ,IY_3DJX integer:: IZ_3DJY ,IX_3DJY ,IY_3DJY integer:: IZ_3DJZ ,IX_3DJZ ,IY_3DJZ integer:: IX,IY,IZ integer:: IJUNC
06-10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值