1

まず第一に、私は非常に初心者であり、ここで頭を悩ませているのではないかと心配しています。私の問題は、Xbox 360 コントローラーの左ジョイスティックで各軸の個別の機能を制御しようとすることにあります。現在、Phidg​​et モーター コントローラーの出力を可変速度で制御するようにコントローラーをコーディングしようとしています。Y 軸が問題なく前進速度を制御するようにコードを作成できましたが、X 軸を個別にコーディングしてモーターを別の方法で動かそうとしても、うまくいきません。Phidg​​et に送信されないだけで、エラーはありません。

X 軸を思いどおりに動作させることができることを発見しましたが、それは Y 軸のコードを削除した場合のみです。あたかも一度に1つの軸だけを登録しているかのように、そこにあるものと、他のものはしたくないようです。それ以外は、問題なく動作していることがわかりました。また、両方のスティックの現在の位置を表示するラベルがいくつかあり、問題なく問題なく動作することにも言及する必要があります。どんな助けでも大歓迎です!ありがとう!

Imports Microsoft.Xna.Framework
Imports Microsoft.Xna.Framework.Input
Public Class Form1
Dim WithEvents MC1 As Phidget21COM.PhidgetMotorControl

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    MC1 = New Phidget21COM.PhidgetMotorControl
    MC1.Open(15100)
    MC1.WaitForAttachment(3000)

    If MC1.IsAttached = True Then
        PhidStat.Text = "Phidget Attached!"
    Else
        PhidStat.Text = "No Phidget Found"
    End If

    JoyConnect.Text = ""
    Threading.Thread.Sleep(1000)
    If GamePad.GetState(PlayerIndex.One).IsConnected = True Then
        JoyConnect.Text = "Controller Connected!"
    Else
        JoyConnect.Text = "Not Connected. :("
    End If

End Sub

Private Sub Controller()
    Dim LX As String
    Dim RX As String
    Dim LY As String
    Dim RY As String

    'Left Joystick
    LX = GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.X * 100 'Negetive value = Left, Positive = Right
    LX1.Text = LX
    If LX < 0 Then
        MC1.Velocity(0) = LX
        MC1.Velocity(1) = -1 * LX
    End If
    If LX > 0 Then
        MC1.Velocity(0) = LX
        MC1.Velocity(0) = -1 * LX
    End If

    LY = GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.Y * 100
    LY1.Text = LY
    MC1.Velocity(0) = LX
    MC1.Velocity(1) = LX

    'Right Joystick
    RX = GamePad.GetState(PlayerIndex.One).ThumbSticks.Right.X * 100
    RX1.Text = RX

    RY = GamePad.GetState(PlayerIndex.One).ThumbSticks.Right.Y * 100
    RY1.Text = RY

End Sub

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Controller()
End Sub
End Class

もう一つ。モーターコントローラーは、ROVを飛ばすためのモーターを制御するためのものです。左スティックを左に動かすと (負の値)、モーター 0 は逆方向に動き、1 は一種の「ポイント ターン」を行うために前進し、左スティックを右に動かすと逆になります。さらに、y 軸は、順方向または逆方向の両方を同時に制御します。

4

0 に答える 0