OpenEdv-开源电子网

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

PS2鼠标 请教原子

[复制链接]

15

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2011-9-16
在线时间
8 小时
发表于 2012-8-8 17:28:24 | 显示全部楼层 |阅读模式
原子哥:
您好,我现在做PS2鼠标试验。将您综合实验例程中的鼠标操作移植到自己的程序中,移动鼠标发现箭头是移动了,但是我的屏是800*480.如果我想鼠标在整个屏上移动,需要怎么办?
现在的问题是图标在屏上不能很好的跟踪鼠标的移动趋势,趋势是对的,但发现移动一点点就鼠标位移计数器很快到255或者-255. 还有就是你屏幕上初始化光标在屏的正中间,设定屏分辨率8个/mm,也没去设定屏上每个像素点对应计数器记几个。还有鼠标采样率。
如果想实现在我的屏上很好移动鼠标,该怎么改正?请指教
你不努力,谁都会看不起你!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2011-9-16
在线时间
8 小时
 楼主| 发表于 2012-8-8 17:38:25 | 显示全部楼层
还有就是,明明只是将鼠标向上移,光标还会发生水平方向的移动?不知道为什么
你不努力,谁都会看不起你!
回复 支持 反对

使用道具 举报

15

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2011-9-16
在线时间
8 小时
 楼主| 发表于 2012-8-8 17:54:30 | 显示全部楼层
鼠标移动处理函数是我自己写的,就是获位移计数器的值。发现一直都是右移的鼠标,但获得的x_movement 到达255之后又出现减小的值。我感觉到达255之后,即使再右移,x
_movement 都应该是255,保持不变。只有左移它才是负值。不知道我理解的对不对?
你不努力,谁都会看不起你!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-8 18:05:44 | 显示全部楼层
回复【3楼】fengcq126:
---------------------------------
鼠标的值是有符号的.
-1和1,那就差很大了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2011-9-16
在线时间
8 小时
 楼主| 发表于 2012-8-9 09:04:17 | 显示全部楼层
嗯,假如右移鼠标,鼠标位移计数器增加,当移动一段距离之后鼠标移动到达255计数值,再右移鼠标计数器值就不变,保持255.然后左移,计数器值从-1再到-255.
不知道我理解的对不对?
还有就是我上面所说的一段距离,它的大小是不是跟分辨率有关?这一点不明白
请原子给解释下 采样率、分辨率、屏幕大小尺寸 三者在设定上有什么关系?
你不努力,谁都会看不起你!
回复 支持 反对

使用道具 举报

15

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2011-9-16
在线时间
8 小时
 楼主| 发表于 2012-8-9 11:38:10 | 显示全部楼层
现在我程序出现的问题是:
手右移鼠标,会出现鼠标位移计数器x_movement出现一组:10 40 70  120 60 30 130 这样中间夹杂着递减趋势的数据,不知道是什么原因。

还有就是你用的屏是240*320,位移计数器可以从-255到255.所对应计数器增加一个计数,屏上移动几个像素点。这个怎么知道
我感觉你的例程是计数器增加一个计数屏上对应一个像素点,但是有一点不明白。当从上到下屏上320个像素点,但计数器最多是255.这样鼠标不是不能再整个屏上移动吗?
请原子哥给解释下?
你不努力,谁都会看不起你!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-9 13:49:17 | 显示全部楼层
回复【6楼】fengcq126:
---------------------------------
鼠标是属于移动定位的.
它的原点是随时变动的,在下一次动作之前就是原点.所以你必须自己累加数据.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2011-9-16
在线时间
8 小时
 楼主| 发表于 2012-8-9 15:18:51 | 显示全部楼层
我的程序大概如下:
static int16_t x,y;
while(1)
{
x+=mouse.x_movement;
y+=mouse.y_movement;
clear_cursor(my_cursor.x,my_cursor.y);
Set_Cursor(x,y);
}
你说的需要自己累加的数据就是指上面定义每次鼠标图标位置的x,y吧?所以我将x,y定义成了static 变量。
x_movement ,y_moment 只记录了相邻两次移动之间水平和竖直方向移动距离对不对?
现在我的问题是鼠标不能很好的跟随手的移动,感觉动一点就到255,或者-255.
我不左移鼠标,是不是x_movement 不会出现负值
 
你不努力,谁都会看不起你!
回复 支持 反对

使用道具 举报

23

主题

106

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2013-9-5
在线时间
8 小时
发表于 2013-10-13 22:50:27 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
同问原子哥,鼠标是属于移动定位,但是这个移动定位是说咱们手从动到停算一次,还是不断的移动定位?我猜是不断的移动定位,但是那溢出是什么意思呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-14 14:42:00 | 显示全部楼层
停一次,算一次。

只要停下,下次移动的时候  数据 就又是从0开始的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-11 03:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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