Boa tarde galera,

Tenho um programa em c# que envia pela serial, uma string contendo 2 parâmetros XY, por exemplo assim "250,300". O arduino recebe, divide em duas coordenadas e usa o Mouse.move(x,y).

O mouse se move, mas não de maneira correta. Se eu passo uma coordenada tipo 100,100 o mouse vai parar em outro lugar que não onde eu mandei. Eu sou novato em tudo isso, ouvi falar em posição relativa e absoluta, mas não entendi como funciona e nem como implementar isso corretamente, alguém tem algum solução? Meu código tá assim (na verdade já me disseram que tá muito errado, mas não apontaram o que tá errado, se alguém fizer esse favor :) 

String xTexto = "";
String yTexto = "";
String XY ="";
int xNumero = 0;
int yNumero = 0;

void setup() {
Serial.begin(9600);
Mouse.begin();

}

String getValue(String data, char separator, int index)
{
int found = 0;
int strIndex[] = {
0, -1 };
int maxIndex = data.length()-1;
for(int i=0; i<=maxIndex && found<=index; i++){
if(data.charAt(i)==separator || i==maxIndex){
found++;
strIndex[0] = strIndex[1]+1;
strIndex[1] = (i == maxIndex) ? i+1 : i;
}
}
return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}

void loop() {
if(Serial.available()>0)
{
while(Serial.available()>0)
{
XY += char(Serial.read());
delay(3);
}
xTexto = getValue(XY,':',0);
yTexto = getValue(XY,':',1);


xNumero = xTexto.toInt();
yNumero = yTexto.toInt();



Mouse.move(xNumero,yNumero);

xTexto = "";
yTexto = "";
XY = "";
}

}

 

Exibições: 255

Responder esta

Respostas a este tópico

Bom, resolve parcialmente meu problema e gostaria de deixar relatado aqui pra se mais alguém tiver o mesmo problema

Fiz basicamente uma gambiarra com uma regra de 3, minha screen é de 1920x1080, e com mouse.move(1,0) 1650 vezes, o mouse completava corretamente os 1920 e por volta de 850, ele completava os 1080, então encontrei a razão e multipliquei os valores passados e coloquei dentro de um FOR pra X e outro pra Y, o mouse anda fazendo angulos de 90º na tela, e depois fiz com que ele retornasse ao ponto 0,0 a cada click pra não me preocupar em saber onde ele estaria nos próximos comandos. A precisão fica em uns 98% :) . 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço