|
首先 感谢两位版主 傻孩子和kingofking的一直一来的热情回复。
一、
typedef struct tag_qt_touch_status_t
{
/*
* The state (on/off) of the library sensors.
* Bit 'n' = state of sensor 'n'.
* 0 = not in detect, 1 = in detect.
*/
uint8_t sensor_states;
/*
* Rotor angles or slider positions.
* These values are valid when sensor_states shows that the corresponding
* rotor or slider sensor is in detect.
*/
uint16_t rotor_slider_values[QT_MAX_NUM_ROTORS_SLIDERS];
} qt_touch_status_t;
定义的BIT的位数是不定的
如果8个channels都定义为key 那么BIT最大为7,而
如果是一个rotor 一个slider 两个keys的话 BIT最大为3
请问这么理解对吗?
二、程序中
if (qt_touch_status.sensor_states & BIT(0))
{
if (qt_touch_status.sensor_states & BIT(1))
{
g_chPWMChannalB = qt_touch_status.rotor_slider_values[1] >> 5;
g_chPWMChannalA = BIT(3) - g_chPWMChannalB - 1;
}
else
{
g_chPWMChannalB = qt_touch_status.rotor_slider_values[0] >> 5;
g_chPWMChannalA = BIT(3) - g_chPWMChannalB - 1;
}
}
else if (qt_touch_status.sensor_states & BIT(1))
{
g_chPWMChannalB = qt_touch_status.rotor_slider_values[1] >> 5;
g_chPWMChannalA = BIT(3) - g_chPWMChannalB - 1;
}
这部分
if (qt_touch_status.sensor_states & BIT(0))
{
if (qt_touch_status.sensor_states & BIT(1))
是判断 slider和rotor都有触及时的处理
而else if (qt_touch_status.sensor_states & BIT(1))是仅有Rotor触及时的处理?
请问qt_touch_status.rotor_slider_values[1] >> 5 右移5位的目的是?
Rotor和Slider 不都是8位精度吗?那为什么定义类型为int,而不是char呢?
那Rotor手指移到一圈 变化的范围是0到255 而slider从一端到另一端是0到255 这么理解对吗?
谢谢 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|