Mouse.move问题
本帖最后由 ken0137 于 2014-7-1 16:48 编辑通过串口发一个字符串给下位机leonardo,使得电脑上的鼠标移动,出现了很奇怪的问题
void setup()
{
//Serial.begin(9600); //使用9600的波特率进行串口通讯
Serial1.begin(9600); //使用9600的波特率进行串口通讯
Mouse.begin();//启动鼠标库
}
void loop()
{
int comdata = 0;int inString=0;
while (Serial1.available() > 0)
{
comdata=Serial1.read();//first char
inString =Serial1.parseInt();//num
}
switch (comdata)
//=======向左移动鼠标====================
case 'L'://Move Left
{
inString=0-inString;
Mouse.move(int(inString),0,0);
Serial1.print("L:");
Serial1.println(inString);
break;
//=======向右移动鼠标====================
case 'R'://Move Right
{
Mouse.move(int(inString),0,0);
Serial1.print("R:");
Serial1.println(inString);
break;
}
}
这里我输入字符串“L100”,意思上向左移动100个单位,这个是正常的,但是我输入L500,则向右移动一点点,困惑啊,求高手指点
===========================
越界了,signed char型数据的范围-128-127
=========================== 是不是出界了?距离是 byte? 本帖最后由 ken0137 于 2014-6-25 09:12 编辑
zoologist 发表于 2014-6-21 11:45 static/image/common/back.gif
是不是出界了?距离是 byte?
~~
看一下 http://arduino.cc/en/Reference/MouseMove 应该是可以的啊
建议你写个循环看看是不是有取值上的限制啊?
zoologist 发表于 2014-6-21 19:56 static/image/common/back.gif
看一下 http://arduino.cc/en/Reference/MouseMove 应该是可以的啊
建议你写个循环看看是不是有取值上 ...
我实验了一下,貌似以128为界限,进行上下移动,256为周期,
例如Mouse.move(0,128,0);则不动,
当超过128时,比如为129,则向下移动过界1,就到了最上面,效果同Mouse.move(0,-127,0)
这里奇怪的是当向下移动数值128的偶数倍时,
Mouse.move(0,255/256/257,0);这样三种,鼠标都不动,
并以此类推,实验了511/512/513,767/768/769,1023/1024/1025,都不动;
128的奇数倍时,例如128,384,640等也不动,
好像是有规律,但不知道为什么是这样的? ken0137 发表于 2014-6-22 02:02 static/image/common/back.gif
我实验了一下,貌似以128为界限,进行上下移动,256为周期,
例如Mouse.move(0,128,0);则不动,
当超 ...
http://arduino.cc/en/Reference/MouseMove
Syntax
Mouse.move(xVal, yPos, wheel);
Parameters
xVal: amount to move along the x-axis - signed char
yVal: amount to move along the y-axis - signed char
wheel: amount to move scroll wheel - signed char
signed char 只有 8 位吧。。。其中还有一位是符号位。超了会溢出的。 fatfox 发表于 2014-7-1 13:48 static/image/common/back.gif
http://arduino.cc/en/Reference/MouseMove
Syntax
怪不得了,2的七次就是128,-128~+127
页:
[1]