93 lines
2.8 KiB
C#
93 lines
2.8 KiB
C#
|
|
using System;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using System.ComponentModel;
|
||
|
|
using System.Data;
|
||
|
|
using System.Drawing;
|
||
|
|
using System.Text;
|
||
|
|
using System.Windows.Forms;
|
||
|
|
|
||
|
|
namespace JoystickSample
|
||
|
|
{
|
||
|
|
public partial class frmMain : Form
|
||
|
|
{
|
||
|
|
private JoystickInterface.Joystick jst;
|
||
|
|
|
||
|
|
public frmMain()
|
||
|
|
{
|
||
|
|
InitializeComponent();
|
||
|
|
}
|
||
|
|
|
||
|
|
private void frmMain_Load(object sender, EventArgs e)
|
||
|
|
{
|
||
|
|
// grab the joystick
|
||
|
|
jst = new JoystickInterface.Joystick(this.Handle);
|
||
|
|
string[] sticks = jst.FindJoysticks();
|
||
|
|
jst.AcquireJoystick(sticks[0]);
|
||
|
|
|
||
|
|
// add the axis controls to the axis container
|
||
|
|
for (int i = 0; i < jst.AxisCount; i++)
|
||
|
|
{
|
||
|
|
Axis ax = new Axis();
|
||
|
|
ax.AxisId = i + 1;
|
||
|
|
flpAxes.Controls.Add(ax);
|
||
|
|
}
|
||
|
|
|
||
|
|
// add the button controls to the button container
|
||
|
|
for (int i = 0; i < jst.Buttons.Length; i++)
|
||
|
|
{
|
||
|
|
JoystickSample.Button btn = new Button();
|
||
|
|
btn.ButtonId = i + 1;
|
||
|
|
btn.ButtonStatus = jst.Buttons[i];
|
||
|
|
flpButtons.Controls.Add(btn);
|
||
|
|
}
|
||
|
|
|
||
|
|
// start updating positions
|
||
|
|
tmrUpdateStick.Enabled = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void tmrUpdateStick_Tick(object sender, EventArgs e)
|
||
|
|
{
|
||
|
|
// get status
|
||
|
|
jst.UpdateStatus();
|
||
|
|
|
||
|
|
// update the axes positions
|
||
|
|
foreach (Control ax in flpAxes.Controls)
|
||
|
|
{
|
||
|
|
if (ax is Axis)
|
||
|
|
{
|
||
|
|
switch (((Axis)ax).AxisId)
|
||
|
|
{
|
||
|
|
case 1:
|
||
|
|
((Axis)ax).AxisPos = jst.AxisA;
|
||
|
|
break;
|
||
|
|
case 2:
|
||
|
|
((Axis)ax).AxisPos = jst.AxisB;
|
||
|
|
break;
|
||
|
|
case 3:
|
||
|
|
((Axis)ax).AxisPos = jst.AxisC;
|
||
|
|
break;
|
||
|
|
case 4:
|
||
|
|
((Axis)ax).AxisPos = jst.AxisD;
|
||
|
|
break;
|
||
|
|
case 5:
|
||
|
|
((Axis)ax).AxisPos = jst.AxisE;
|
||
|
|
break;
|
||
|
|
case 6:
|
||
|
|
((Axis)ax).AxisPos = jst.AxisF;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// update each button status
|
||
|
|
foreach (Control btn in flpButtons.Controls)
|
||
|
|
{
|
||
|
|
if (btn is JoystickSample.Button)
|
||
|
|
{
|
||
|
|
((JoystickSample.Button)btn).ButtonStatus =
|
||
|
|
jst.Buttons[((JoystickSample.Button)btn).ButtonId - 1];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|