private void timer1_Tick(object sender, EventArgs e) { Label[] labels = { labelBtn1, labelBtn2, labelBtn3, labelBtn4, labelBtn5, labelBtn6, labelBtn7, labelBtn8, labelBtn9, labelBtn10, labelBtn11, labelBtn12, labelBtn13, labelBtn14, labelBtn15, labelBtn16 }; Joystick_WMM.JOYINFOEX info = Joystick_WMM.getJoyPosEx((uint)0); uint mask = 1; for (int i = 0; i < 16; i++) { if ((info.dwButtons & mask) != 0) { labels[i].ForeColor = Color.Red; } else { labels[i].ForeColor = DefaultForeColor; } mask <<= 1; } }
public void ProcesarEventoJoy(Singleton.EventosJoy evento) { Joystick_WMM.JOYINFOEX joyinfo; switch (evento) { case Singleton.EventosJoy.None: // break; case Singleton.EventosJoy.AutoPltON: // modem_autopilot = WflyUplink.Autopilot.Autopilot; break; case Singleton.EventosJoy.AutoPilotOFF: // modem_autopilot = WflyUplink.Autopilot.Manual; break; case Singleton.EventosJoy.AutoPltCo: modem_autopilot = WflyUplink.Autopilot.Copilot; break; case Singleton.EventosJoy.AutoPilotSWnext: // modem_autopilot = (WflyUplink.Autopilot)(((int)modem_autopilot + 1) % 3); break; case Singleton.EventosJoy.AutoPilotSWprev: if ((int)modem_autopilot == 0) { modem_autopilot = (WflyUplink.Autopilot) 2; } else { modem_autopilot = (WflyUplink.Autopilot)((int)modem_autopilot - 1); } break; case Singleton.EventosJoy.CamA: // modem_cam = false; break; case Singleton.EventosJoy.CamB: // modem_cam = true; break; case Singleton.EventosJoy.CamSW: // modem_cam = !modem_cam; break; case Singleton.EventosJoy.HudCL: // modem_hud = 0; break; case Singleton.EventosJoy.Hud1: // modem_hud = 1; break; case Singleton.EventosJoy.Hud2: // modem_hud = 2; break; case Singleton.EventosJoy.Hud3: // modem_hud = 3; break; case Singleton.EventosJoy.HudSWnext: // modem_hud = (modem_hud + 1) % 4; break; case Singleton.EventosJoy.HudSWprev: if (modem_hud == 0) { modem_hud = 3; } else { modem_hud = modem_hud - 1; } break; case Singleton.EventosJoy.GoHome: // modem_ruta = WflyUplink.Ruta.Casa; break; case Singleton.EventosJoy.GoWptRuta: // modem_ruta = WflyUplink.Ruta.Ruta; break; case Singleton.EventosJoy.GoUplink: // modem_ruta = WflyUplink.Ruta.Modem; break; case Singleton.EventosJoy.GoHold: modem_ruta = WflyUplink.Ruta.Hold; break; case Singleton.EventosJoy.GoSWnext: // modem_ruta = (WflyUplink.Ruta)(((int)modem_ruta + 1) % 4); break; case Singleton.EventosJoy.GoSWprev: // if ((int)modem_ruta == 0) { modem_ruta = (WflyUplink.Ruta) 3; } else { modem_ruta = (WflyUplink.Ruta)((int)modem_ruta - 1); } break; case Singleton.EventosJoy.PanTiltCenter: pan = 0; tilt = 0; break; case Singleton.EventosJoy.FlapsOff: flaps = 0; break; case Singleton.EventosJoy.FlapsFull: flaps = singleton.full_flap; break; case Singleton.EventosJoy.FlapsInc: flaps += singleton.step_flap * singleton.full_flap; if (flaps > singleton.full_flap) { flaps = singleton.full_flap; } break; case Singleton.EventosJoy.FlapsDec: flaps -= singleton.step_flap * singleton.full_flap; if (flaps < 0) { flaps = 0; } break; case Singleton.EventosJoy.TrimAil: joyinfo = Joystick_WMM.getJoyPosEx((uint)0); TrimAil = -AdjustaValor((2 * (joyinfo.dwXpos / 65535.0f) - 1), TrimAil); break; case Singleton.EventosJoy.TrimEle: joyinfo = Joystick_WMM.getJoyPosEx((uint)0); TrimEle = -AdjustaValor((2 * (joyinfo.dwYpos / 65535.0f) - 1), TrimEle); break; case Singleton.EventosJoy.TrimTail: joyinfo = Joystick_WMM.getJoyPosEx((uint)0); TrimTail = -AdjustaValor((2 * (joyinfo.dwRpos / 65535.0f) - 1), TrimTail); break; case Singleton.EventosJoy.TrimAll: joyinfo = Joystick_WMM.getJoyPosEx((uint)0); TrimEle = -AdjustaValor((2 * (joyinfo.dwYpos / 65535.0f) - 1), TrimEle); TrimAil = -AdjustaValor((2 * (joyinfo.dwXpos / 65535.0f) - 1), TrimAil); TrimTail = -AdjustaValor((2 * (joyinfo.dwRpos / 65535.0f) - 1), TrimTail); break; case Singleton.EventosJoy.Picture: formIkarusMain.Capturar_Foto(); break; default: break; } }
void tareaJOY() { if (changed_mask) { changed_mask = false; wfly.SetMask(_mask); } Joystick_WMM.JOYINFOEX joyinfo = Joystick_WMM.getJoyPosEx((uint)0); // Analiza si se ha pulsado algun boton nuevo int bmask = 1; for (int i = 0; i < 16; i++) { if ((joyinfo.dwButtons & bmask) == 0) { old_buttons &= ~bmask; } else if ((old_buttons & bmask) == 0) { old_buttons |= bmask; Singleton.EventosJoy evento = (Singleton.EventosJoy)((int)singleton.joy_buttons[i]); ProcesarEventoJoy(evento); } bmask <<= 1; } // Analiza el modem uplink if (changed_switches) { changed_switches = false; SetSwitches(modem_ruta, modem_autopilot, (byte)modem_hud, modem_cam); } if (changed_alt) { changed_alt = false; SetAltitude((int)modem_alt); } if (changed_lonlat) { changed_lonlat = false; SetLonLat(modem_lon, modem_lat); } // Comandos varios if (changed_debugvar) { changed_debugvar = false; SetDebugVar(debugvar_id, debugvar_value); } else if (changed_wptid) { changed_wptid = false; SetWptID(_wpt_id); } else if (trig_cmdCenterIR) { trig_cmdCenterIR = false; SetCenterIR(); } else if (trig_cmdGainIR) { trig_cmdGainIR = false; SetGainIR(); } else if (trig_cmdSetHome) { trig_cmdSetHome = false; SetHome(); } else if (trig_cmdSaveFlash) { trig_cmdSaveFlash = false; SaveFlash(); } // Analiza movimiento PAN & TILT int v = ((short)joyinfo.dwPOV); if (v >= 0) { float alfa = (float)(v / 100 * Math.PI / 180.0); float mi_pan = pan + (float)(Math.Sin(alfa) * singleton.pantilt_speed / 10.0); // dt=10hz if (mi_pan > 1) { pan = 1; } else if (mi_pan < -1) { pan = -1; } else { pan = mi_pan; } float mi_tilt = tilt + (float)(Math.Cos(alfa) * singleton.pantilt_speed / 10.0); if (mi_tilt > 1) { tilt = 1; } else if (mi_tilt < -1) { tilt = -1; } else { tilt = mi_tilt; } } // Analiza Ejes del joystick float _pitch = AdjustaValor(2 * (joyinfo.dwYpos / 65535.0f) - 1, TrimEle); float _roll = AdjustaValor(2 * (joyinfo.dwXpos / 65535.0f) - 1, TrimAil); float _yaw = AdjustaValor(2 * (joyinfo.dwRpos / 65535.0f) - 1, TrimTail); float _thr = 1 - 2 * (joyinfo.dwZpos / 65535.0f); SetControles(_roll, _pitch, _thr, _yaw, pan, tilt, flaps); //wfly.SetServos(pan, _pitch, _thr, tilt); // System.Console.WriteLine("PITCH " + _pitch + " ROLL " + _roll + " THR " + _thr + " TAIL " + _yaw); // System.Console.WriteLine("Auto " + modem_autopilot + " HUD " + modem_hud + // " RUTA " + modem_rutacasa + " CAM " + modem_cam + " PAN " + pan + " TILT " + tilt); }