STATIC UINT8 Key1val[6]={0xA5,0x5A,0x04,0xB1,0xB5,0xAA};//按键1
STATIC UINT8 Key2val[6]={0xA5,0x5A,0x04,0xB2,0xB6,0xAA};//按键2
STATIC UINT8 Key3val[6]={0xA5,0x5A,0x04,0xB3,0xB7,0xAA};//按键3
STATIC UINT8 Key2val[6]={0xA5,0x5A,0x04,0xB2,0xB6,0xAA};//按键2
STATIC UINT8 Key3val[6]={0xA5,0x5A,0x04,0xB3,0xB7,0xAA};//按键3
kernel驱动 中,下面三个数组为app发过来的按键键值,开始定义一个数组buf[6]={0};然后把实际接收到的键值保存到buf[]中,再与下面3个数组(键值)比较,思路是怎样的?用for一个个数组一个个值比较吗?buf[i]赋值后]可以直接这样吗?在已知道sizeof Key1val = sizeof buf =6的条件下,这样比较可以吗?
数组中元素间如果没有空隙(由于字节对齐产生的空隙),就可以用户memcpy.对结构数组,由于成员的类型不同,字节对齐产生的空隙存在,就不能用memcpy
memcmp一般编译器会优化的,实际一般不会这么跑(debug模式可能会这样,release模式肯定不会)
数组里面的元素不多,可以一个个比,不过我就是考虑到如果多的话应该有更好的解决办法,而数组和一般变量比较不一样,所以特别请教下大家,很久没来这里发提问帖了,还是一如既往的能学到东西,解决问题!
用memcmp(buf, Key1val, sizeof(buf));解决了