簡體   English   中英

使用加速度計和陀螺儀移動鼠標光標

[英]Move mouse cursor with accelerometer and gyroscope

希望你能幫我!

我想用陀螺儀和加速度計的值來控制我的電腦光標。 所以基本上當我移動傳感器時,光標應該被移動。 我使用了 MPU-6050 芯片和 ESP32。

我如何獲得光標的位置:

public static void main (String[] args){

        for(int i = 0; i<= 1000000; i++) {

        PointerInfo info = MouseInfo.getPointerInfo();

        Point location = info.getLocation();

        System.out.println("x="+ location.x + " y=" + location.y);

}

我將如何從傳感器獲取值:

 public SensorData(JsonObject data) {
    //accerlation accelerometer
    ax = data.get("ax").asDouble()/ASENSETIFITY;
    ay = data.get("ay").asDouble()/ASENSETIFITY;
    az = data.get("az").asDouble()/ASENSETIFITY;

    //temperature 
    temp = data.get("t").asDouble()/340.00+36.53;

    //gyroscope
    gx = data.get("gx").asDouble()/GSENSETIFITY;
    gy = data.get("gy").asDouble()/GSENSETIFITY;
    gz = data.get("gz").asDouble()/GSENSETIFITY;

}

public String toString() {
    return "ax: " + Double.toString(ax) +", ay: " + Double.toString(ay)
        +", az: " + Double.toString(az) +", temp: " + Double.toString(temp)
        +", gx: " + Double.toString(gx) +", gy: " + Double.toString(gy)
        +", gz: " + Double.toString(gz);

}

到目前為止我得到了什么:

package mouse;

import java.awt.AWTException;

import java.awt.Robot;
import Connection.SensorData;

public class MouseMoving {
Robot robot;

public MouseMoving(){
    try {
        robot = new Robot();
    } catch (AWTException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}


    public static void verarbeite(SensorData data){

    System.out.print("Deine Maus befindet sich da:");
    System.out.println(data);

    //robot.mouseMove(1,1);
}


}   

我的問題:

我現在如何控制光標? 你有想法嗎?

我想,您需要鼠標光標的最后一個位置,然后獲取傳感器的當前位置並更改鼠標位置。 但是我怎么能用我的價值觀寫這個呢?

我找到了這個網站,當傳感器移動時,有 3 個物體在 PC 上旋轉。 但這不是用 Java 編寫的,我不明白他的解決方案。

我也發現了這個這個問題。 也許它會像那樣工作。 但是我編程時間不長,不明白。

如果我很好地理解了您的問題,那么您正在嘗試使用 Java 移動鼠標光標。 為此,您可以使用Robot類,該類具有MouseMove(int x, int y)方法。

默認情況下,它將光標定位在主屏幕上。 如果您有多個屏幕設置,則必須傳遞一個GraphicsDevice對象來指示應使用哪個屏幕。

例如,將光標向右移動 10 個像素

PointerInfo pointerInfo = MouseInfo.getPointerInfo();
Point mouseLocation = pointerInfo.getLocation();
GraphicsDevice graphicsDevice = pointerInfo.getDevice();
new Robot(graphicsDevice).MouseMove(mouseLocation.getX()+10, mouseLocation.getY());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM