ken0137 发表于 2014-6-21 00:11:07

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
===========================

zoologist 发表于 2014-6-21 11:45:47

是不是出界了?距离是 byte?

ken0137 发表于 2014-6-21 19:28:58

本帖最后由 ken0137 于 2014-6-25 09:12 编辑

zoologist 发表于 2014-6-21 11:45 static/image/common/back.gif
是不是出界了?距离是 byte?

~~


zoologist 发表于 2014-6-21 19:56:46

看一下 http://arduino.cc/en/Reference/MouseMove 应该是可以的啊

建议你写个循环看看是不是有取值上的限制啊?

ken0137 发表于 2014-6-22 02:02:33

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等也不动,
好像是有规律,但不知道为什么是这样的?

fatfox 发表于 2014-7-1 13:48:31

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 位吧。。。其中还有一位是符号位。超了会溢出的。

ken0137 发表于 2014-7-1 16:47:05

fatfox 发表于 2014-7-1 13:48 static/image/common/back.gif
http://arduino.cc/en/Reference/MouseMove

Syntax


怪不得了,2的七次就是128,-128~+127
页: [1]
查看完整版本: Mouse.move问题