

| ┌bin┼ | ||||
| │ | ||||
| ┌─puchiRS232C─ | ┼obj┼ | |||
| │ | ├Properties┼ | |||
| │ | ├Form1.cs | |||
| │ | ├Form1.Designer.cs | |||
| │ | ├Form1.resx | |||
| │ | ├JoyStickWrapper.dll | |||
| │ | : | |||
| │ | : | |||
| puchi | ─ | puchiRS232C | ┼puchiRS232C.sln | |
| │ | ||||
| └puchiRS232C.suo | ||||


using ManagedDX; // JoyStickWrapper.dllのため using Microsoft.DirectX.DirectInput; // JoystickStateを読むため
JoyStickWrapper joyStick; // ManagedDirectXでDirectInputからジョイスティックを使うラッパー
int[] position = new int[9];
public Form1()
{
InitializeComponent();
joyStick = new JoyStickWrapper(this);
if (joyStick.init())
{
timer1.Enabled = true; // ジョイスティック監視タイマーON
}
for (int i = 0; i < 9; i++) position[i] = 0;
}
private void timer1_Tick(object sender, EventArgs e)
{
}
これに必要なコードを書き入れると以下のようになります。
private void timer1_Tick(object sender, EventArgs e)
{
JoystickState state = joyStick.update();
//Capture Buttons.
byte[] buttons = state.GetButtons();
for (int i = 0; i < buttons.Length; i++)
{
if (buttons[i] != 0)
{
if (i == 3) {
for (int j = 0; j < 9; j++)
{
position[j] = 1;
servo(j, position[j] % 220);
}
}
else servo(i, position[i] % 220);
position[i] += 10;
}
}
}
ボタンが押されたらばそのボタンに対応するサーボモーターが10ステップずつ移動するようになっています。また、3番のボタンを押すとゼロの位置に戻ります。(3番のモーターは10ステップ毎に動かせないということです)