Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » SetCursorPos - ruckelt

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.05.2008, 11:35 Uhr
~Alex__
Gast


Hallo,

ich habe doch noch eine Frage dazu:

Ich versuche mit einem IR Sender und Empfänger die Maus zu steuern. Der IR Empfänger liefert mit einen float mit f=0.0 für den linken und f=1.0 für den rechten Bildrand.

Anhand davon bewege ich die Maus:


C++:
//Maus bewegen
    float xMaus = (dot0.X - 0.1) * 2500;
    float yMaus = (1- dot0.Y - 0.1) * 2000;
    SetCursorPos(xMaus, yMaus);


0.1 subtrahiere ich, um die Ungenauigkeit vom IR Empfänger abzufangen.

Mein Problem ist nun, dass an sich alles funktioniert, die Maus sich aber recht hackelig und nicht flüssig bewegt. Hätte jemand eine Idee, woran es liegen kann?

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.05.2008, 12:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
naja die ungenauigkeit schwankt ja denke ich, sinnvollerweise würde ich evtl immer die alten werte mit einfließen lassen mit einer geringen gewichtung, um das "zittern" des sensors auszugleichen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.05.2008, 12:13 Uhr
~Alex__
Gast


Hi,

nein, ich glaube daran liegt es nicht.
Die -0.1 im float xMaus = (dot0.X - 0.1) * 2500; steht nur für die Korrektur an den Bildrändern (0.0 und 1.0 werden tatsächlich nie ganz erreicht)

Sprich liefert float xMaus = (dot0.X) * BildBreite ; die gleichen Ergebnisse im Bezug auf die Mausbewegung.

Es handelt sich auch nicht um ein Zittern, sondern es scheint so zu sein, dass die Werte nicht schnell genug ausgelesen werden - deswegen gibt es keine so flüssige Bewegung beim Steuern der Maus.

Ich habe die Bewegung der Maus in einer Funktion, die aus der int main() in einer Schleife aufgerufen wird:


C++:
while(!pressed.Button.Home()) {
        
....
        IRDots();
}



Kann die Problematik da liegen? Sprich die Frequenz mit der die Schleife wiederholt wird (und somit die Abtastrate für die Mausposition) ist zu gering. ?
Würde es Sinn machen, die Funktion für die Bestimmung der Mausposition in einen eigenen Thread zu packen?

Grüße
Alex
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.05.2008, 16:17 Uhr
~Alex__
Gast


Ich habe mal versucht, die Koordinaten in einem Thread auszulesen und dort auch die Mausposition zu setzen. Ich würde sagen, damit wird es minimal besser, aber trotzdem noch nicht wirklich gut.

Als letzen Ausweg könnte man die letze Position speichern und wenn eine neue Mausposition kommt einfach eine Gerade dazwischen berechnen und die Mauskoordinaten in einer selbst definierten Granularität dort setzen, so dass es nach Bewegung aussieht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: