|
发表于 2009-6-9 23:03:38
|
显示全部楼层
第一个示例代码已经更新。^_^ Have a good time.
主循环核心代码片断 int main(void)
{
...
while(1)
{
...
wCounter++;
if (!(wCounter & (((U32)1<<7) - 1))) //每2^7才执行一次Snail_Touch_Task()
{
//! Snail Touch Main Task
if (SNAIL_TOUCH_SUCCESS == Snail_Touch_Task()) //该任务用来维持基本的Touch通讯
{
g_bIfGetTouchState = TRUE;
}
}
}
}
<font color=red>HID 鼠标设备消息处理函数 <font color=brown>void device_mouse_hid_task(void)
{
SNAIL_TOUCH_STATUS Status = Snail_Touch_Get_Status();
...
extern Bool g_bIfGetTouchState;
if (FALSE == g_bIfGetTouchState)
{
return ;
}
else
{
g_bIfGetTouchState = FALSE;
}
{
U8 u8_report_buttons = 0;
S8 Slider = 0;
S8 x,y;
double Temp;
U16 iAngle;
if (Status.Status.Sensor.KeyA)
{
u8_report_buttons |= 2;
}
if (Status.Status.Sensor.KeyB)
{
u8_report_buttons |= 1;
}
if (Status.Status.Sensor.Slider)
{
if (Status.SliderValue > 128)
{
Slider = 1;
}
else
{
Slider = -1;
}
}
if (Status.Status.Sensor.Rotor)
{
iAngle = Snail_Touch_Get_Rotor_Angle_Degree();
Temp = ((double)iAngle * (3.1415926535 / 180.0));
x = 10 * cos(Temp);
y = -10 * sin(Temp);
}
else
{
x = 0;
y = 0;
}
while ( !Is_usb_in_ready(EP_HID_MOUSE_IN) );
{
Usb_reset_endpoint_fifo_access(EP_HID_MOUSE_IN);
//! Write report
Usb_write_endpoint_data(EP_HID_MOUSE_IN, 8, u8_report_buttons);
Usb_write_endpoint_data(EP_HID_MOUSE_IN, 8, x);
Usb_write_endpoint_data(EP_HID_MOUSE_IN, 8, y);
Usb_write_endpoint_data(EP_HID_MOUSE_IN, 8, Slider);
Usb_ack_in_ready_send(EP_HID_MOUSE_IN);
}
}
...
} |
|