不知道如何修改ST给的DEMO里的Joystick_Send(),比如战舰开发板的USB 触控鼠标源码里的Joystick_Send()函数,是从JoystickMouse 这个DEMO里的
void Joystick_Send(uint8_t Keys)
{
uint8_t Mouse_Buffer[4] = {0, 0, 0, 0};
int8_t X = 0, Y = 0;
switch (Keys)
{
case JOY_LEFT:
X -= CURSOR_STEP;
break;
case JOY_RIGHT:
X += CURSOR_STEP;
break;
case JOY_UP:
Y -= CURSOR_STEP;
break;
case JOY_DOWN:
Y += CURSOR_STEP;
break;
default:
return;
}
/* prepare buffer to send */
Mouse_Buffer[1] = X;
Mouse_Buffer[2] = Y;
/* Reset the control token to inform upper layer that a transfer is ongoing */
PrevXferComplete = 0;
/* Copy mouse position info in ENDP1 Tx Packet Memory Area*/
USB_SIL_Write(EP1_IN, Mouse_Buffer, 4);
#ifndef STM32F10X_CL
/* Enable endpoint for transmission */
SetEPTxValid(ENDP1);
#endif /* STM32F10X_CL */
}
修改过来的吧,为什么参数要修改为4个呢,
函数具体调用时这4个参数又如何赋值的。
if(key)
{
if(key==KEY_UP)Joystick_Send(0,0,0,1); //发送滚轮数据到电脑 (为什么)
else if(key==KEY_DOWN)Joystick_Send(0,0,0,(u8)-1); //发送滚轮数据到电脑 (为什么)
else
{
if(key==KEY_LEFT)keysta|=0X01; //发送鼠标左键
if(key==KEY_RIGHT)keysta|=0X02; //发送鼠标右键
Joystick_Send(keysta,0,0,0); //发送给电脑 (为什么)
}
}else if(keysta)//之前有按下
{
keysta=0;
Joystick_Send(0,0,0,0); //发送松开命令给电脑
}
tp_dev.scan(0);
if(tp_dev.sta&TP_PRES_DOWN) //触摸屏被按下
{
//最少移动5个单位,才算滑动
if(((usb_abs(tp_dev.x,xlast)>4)||(usb_abs(tp_dev.y,ylast)>4))&&tpsta==0)//等待滑动
{
xlast=tp_dev.x; //记录刚按下的坐标
ylast=tp_dev.y;
tpsta=1;
}
if(tp_dev.x<lcddev.width&&tp_dev.y<lcddev.height)
{
if(tp_dev.x>216&&tp_dev.y<16)Load_Draw_Dialog();//清除
else TP_Draw_Big_Point(tp_dev.x,tp_dev.y,RED); //画图
if(bDeviceState==CONFIGURED)
{
if(tpsta)//滑动
{
x0=(xlast-tp_dev.x)*5; //上次坐标值与得到的坐标值之差,扩大2倍
y0=(ylast-tp_dev.y)*5;
xlast=tp_dev.x; //记录刚按下的坐标
ylast=tp_dev.y;
Joystick_Send(keysta,-x0,-y0,0); //发送数据到电脑 (为什么)
delay_ms(5);
}
}
}
}
|