Arduino & C# controllo mouse!

Salve ragazzi, risolto il problema di come far comunicare l'arduino al pc tramite C# mi stavo chiedendo quale fosse il modo più semplice per controllare (tramite C#) il mouse o la tastiera!
Cioè, avendo collegato al mio arduino una tastiera PS2 ed il nunchuck, mi piacerebbe collegarlo al pc e poter controllare il mouse e la tastiera.

Ovviamente lo collegherò al pc tramite moduli xBee in configurazione base per avere un controllo a distanza! :slight_smile:

Suggerimenti?

Io invece stavo cercando un modo per farlo tramite il processing...

Chi sà chi riuscirà nella sua impresa

albyy911:
Io invece stavo cercando un modo per farlo tramite il processing...

Chi sà chi riuscirà nella sua impresa

Io tempo fa avevo già cercato!
http://www.google.com/search?as_sitesearch=processing.org&as_q=control+the+mouse

Però non ho approfondito!

Puoi provare con

Cursor.Position = new Point(Cursor.Position.X + 10, Cursor.Position.Y + 10);

per un esempio di come muovere il mouse di 10 pixel a destra e in basso.
Il mouse in sostanza è chiamato cursore

Ciao

Ho avuto lo stesso problema cercando di controllare il mouse tramite un controller Playstation 1. Ho risolto con:

this.Cursor = new Cursor(Cursor.Current.Handle);
Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);

Ciao!

Anispir:
Ho avuto lo stesso problema cercando di controllare il mouse tramite un controller Playstation 1. Ho risolto con:

this.Cursor = new Cursor(Cursor.Current.Handle);

Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);




Ciao!

Si ma dove lo devo inserire questo codice?
E per simulare un click?
A me serva utilizzare il mouse su altri programmi non su quello che creo.! Quindi dovrebbe lavorare in background

Con questo controlli il mouse per tutto il sistema operativo, non solo per il programma che crei in c#.
Cosa ottieni come input dal mouse sul serial monitor? Perche' io utilizzando un pad ( 4 frecce per le 4 direzioni) ottenevo delle stringhe tipo RIGHT, LEFT,UP,DOWN ma di cosa esce da un mouse non ne ho proprio idea.

Il click e doppio click mi hanno fatto dannare ma alla fine ho risolto così:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
using System.Linq;

namespace SimpleSerial
{
    public partial class Form1 : Form
    {
       
       
        

          public Form1()
        {
            
            InitializeComponent();
             
        }

          [DllImport("user32.dll")]
          private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, int dwData, IntPtr dwExtraInfo);
          private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
          private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;
          private const UInt32 MOUSEEVENTF_RIGHTDOWN = 0x00000008;
          private const UInt32 MOUSEEVENTF_RIGHTUP = 0x00000010;
          private const UInt32 MIDDLEDOWN = 0x00000020;
          private const UInt32 MIDDLEUP = 0x00000040;
          private const UInt32 MOUSEEVENTF_WHEEL = 0x0800;


          internal static void SendDoubleClickL()
          {
              SendClickL();
              SendClickL();
          }

          internal static void SendClickL()
          {
              SendDownL();
              SendUpL();
          }

          internal static void SendClickR()
          {
              SendDownR();
              SendUpR();
          }

          internal static void WheelUp()
          {
              mouse_event(MOUSEEVENTF_WHEEL, 0, 0, +7, new System.IntPtr());
          }

          internal static void WheelDown()
          {
              mouse_event(MOUSEEVENTF_WHEEL, 0, 0, -7, new System.IntPtr());
          }

          internal static void SendUpL()
          {
              mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, new System.IntPtr());
          }

          internal static void SendDownL()
          {
              mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, new System.IntPtr());
          }

          internal static void SendDownR()
          {
              mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, new System.IntPtr());
          }

          internal static void SendUpR()
          {
              mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, new System.IntPtr());
          }
         

        }
 
            }

          
           

            if (tua condizione si avvera)
            {
                SendClickL();
               
            }

            if (condizione si avvera)
            {
                SendClickR();
              
            }

            if (condizione si avvera)
            {
                WheelUp();
                
                laststring = "R1";
            }

            if (condizione si avvera)
            {
                WheelDown();

                laststring = "R2";
            }

            if (condizione si avvera)
            {
                Special();

               
            }

            if (condizione si avvera)
            {
                SendDoubleClickL();

                laststring = "Square";
            }

         
        }

Qui ho incluso anche Rotella in su, Rotella in Giu, Click destro, CLick sinistro e Doppio Click sinistro.

Spero ti sia utile, Saluti :wink: