OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7493|回复: 4

Joystick_Send()的问题

[复制链接]

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
发表于 2013-6-27 16:31:47 | 显示全部楼层 |阅读模式
不知道如何修改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);   
}       
}   
}
}











正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-27 16:53:12 | 显示全部楼层
回复【楼主位】can123dao:
---------------------------------
这你要去研究下USB 鼠标的数据传输格式了,百度可以查到的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
 楼主| 发表于 2013-6-27 17:05:05 | 显示全部楼层
具体指点一下。四个值和用USB Hound抓到的Data有什么关系。
回复 支持 反对

使用道具 举报

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
 楼主| 发表于 2013-6-27 17:08:39 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
具体指点一下。四个值和用USB Hound抓到的Data有什么关系。
回复 支持 反对

使用道具 举报

48

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
380
金钱
380
注册时间
2013-6-27
在线时间
17 小时
 楼主| 发表于 2013-6-27 20:06:44 | 显示全部楼层
不懂啊怎么搞的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 10:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表