OpenEdv-开源电子网

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

求ALIENTEK STM32标准版开发板 能直接用的 “键盘和鼠标”组合工程程序,自已搞了好久,头都大了,只会单设备的。

[复制链接]

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2014-7-13
在线时间
44 小时
发表于 2014-7-13 19:37:45 | 显示全部楼层 |阅读模式
5金钱
求ALIENTEK STM32标准版开发板 能直接用的 “键盘和鼠标”组合工程程序,自已搞了好久,头都大了,只会单设备的。

可以上传,或发我邮箱:286296811@qq.com(hbjsgaoyang@qq.com)

谢谢了,灰常感谢。

最佳答案

查看完整内容[请看2#楼]

可以参考《圈圈叫你玩USB》的138页起。 有两种方法: 1、只是用一个接口,但是使用两个应用集合两个报告 2、使用两个接口,一个接口实现键盘功能,另一个接口实现鼠标功能 我没有源码,不过,根据上面的思路再修改单设备的USB工程也不是很难的事,自己解决吧!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-6-10
在线时间
0 小时
发表于 2014-7-13 19:37:46 | 显示全部楼层
可以参考《圈圈叫你玩USB》的138页起。
有两种方法:
1、只是用一个接口,但是使用两个应用集合两个报告
2、使用两个接口,一个接口实现键盘功能,另一个接口实现鼠标功能
我没有源码,不过,根据上面的思路再修改单设备的USB工程也不是很难的事,自己解决吧!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-13 23:20:30 | 显示全部楼层
百度搜索下吧....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2014-6-30
在线时间
29 小时
发表于 2014-7-14 22:16:41 | 显示全部楼层
机械编码器程序

unsigned char Temp[5];
unsigned char code Ytemp[5]={0x03,0x01,0x00,0x02,0x03}; 
unsigned char code Ztemp[5]={0x03,0x02,0x00,0x01,0x03}; 
unsigned char Count=0x00;


unsigned char io(void)
{
 
  if((A==0)&&(BB==0)) return 0x00;
  if((BB==0)&&(A==1)) return 0x01;
  if((A==0)&&(BB==1)) return 0x02;
  if((A==1)&&(BB==1)) return 0x03;
  return 0xff;
}


unsigned char feisousm(void)
{

  // if(sm_all_time==0xff)
   //{
     if(Count<5)
 {
    unsigned char b,m;
b=io();
m=Count;
if(b==Temp[m-1]) {return 0;} //如果是相同的值,就不采。

Temp[Count]=io();
    Count++;
 }

 if(Count==5)
 {
    unsigned char a;

for(a=0;a<5;a++)
{
   if(Temp[a]!=Ztemp[a]) break;
 }
 if(a==5)  {Count=1;Temp[0]=0x03;return 'z';}

for(a=0;a<5;a++)
{
   if(Temp[a]!=Ytemp[a]) break;
 }
 if(a==5)  {Count=1;Temp[0]=0x03;return 'y';}

         if(a<5)   {for(a=0;a<4;a++)
            {
  Temp[a]=Temp[a+1];
  Count=4;
}
               }
  }

/**************************************PS/2口版本************************************/
void send_kb(unsigned char sm)
{

   switch(sm)
   {
     case 0xdf: send(0x33);send(0xf0);send(0x33);break;  //h键,意义:回车
 case 'y': send(0x32);send(0xf0);send(0x32);break;  //b键,意义:左
 case 'z': send(0x0b);send(0xf0);send(0x0b);break;  //F6,  意义:右
 case 0xef: send(0x54);send(0xf0);send(0x54);break;  //[键,意义:静音0000000
 case 0xfb: send(0x42);send(0xf0);send(0x42);break;  //k键,意义:血压000000
 case 0xf7: send(0x3b);send(0xf0);send(0x3b);break;  //j键,意义:冻结0000000  fd
 case 0xfd: send(0xe0);send(0x70);send(0xe0);send(0xf0);send(0x70);break;//insert键,意义:打印00000
 case 0xfe: send(0x35);send(0xf0);send(0x35);break;  //y键 意义:回主窗口 00000000
 
 //defauit:break;
 } 
}

/********************************************************************************/

///////////////////////////////////////////////////////////////////////////////////////////////

/*返回0为无效值,上面的函数接口必须做判断。*/

unsigned char send_sm(void)
{
   unsigned temp,temp1,a;

   temp=P1;  //读回数据
   
   temp&=0x3f;
   if(temp==0x3f)  return 0;  

delay_us(50);
 for(a=9;a>0;a--)
  {
    temp1=P1;
if((temp1&0x3f)!=temp) return 0;
delay_us(50);
}
while(1)//等待按键的松开。
{
  a=P1;
  if((a|0xc0)==0xff)
  {
temp|=0xc0;

return(temp); //经过 上面的去战抖,返回值;
               }
  }
}
 
希望对你有用
回复

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2014-7-13
在线时间
44 小时
 楼主| 发表于 2015-1-11 07:22:16 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢。
回复

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2014-7-13
在线时间
44 小时
 楼主| 发表于 2015-1-11 07:22:33 | 显示全部楼层
回复【3楼】648806817:
---------------------------------
谢谢。
回复

使用道具 举报

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2014-7-13
在线时间
44 小时
 楼主| 发表于 2015-1-11 07:22:43 | 显示全部楼层
回复【4楼】ziye334:
---------------------------------
谢谢。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 05:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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