Boa noite, pessoal!
Como tenho reparado, existe por aqui muita gente entendida em visual basic, e penso portanto que me poderão ajudar.
Gostava de saber se alguém conhece (ou possui...) alguma estrutura para vb.net que registe uma posição dada por um joystick.
O objectivo será usar essa posição para comandar 2 eixos de uma máquina, por comunicação série.
Toda a estrutura da comunicação já está feita, as variáveis de posição criadas (pois já são usadas para controlo por input de valores), só faltando este "pequeno" pormenor...
Ficaria mesmo agradecido se me pudessem ajudar.
Obrigado!
malta, agora é que preciso mesmo da vossa ajuda!
vou postar aqui o que já tenho feito, mas isto está a dar um erro que eu não sei resolver.
eu retirei isto de um outro forum, de alguém que queria fazer o mesmo que eu...
o erro que dá é um "FileLoadException".
será que alguém podia dar uma vista de olhos nisto a sério? ficaria mesmo muito agradecido (mesmo mesmo mesmo...)
Imports System
Imports System.Windows.Forms
Imports Microsoft.DirectX.DirectInput
Imports Microsoft.DirectX
Public Class Form1
Private applicationDevice As Device = Nothing
Public Shared state As New JoystickState
Public Function InitDirectInput() As Boolean
Dim instance As DeviceInstance
For Each instance In Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly)
applicationDevice = New Device(instance.InstanceGuid)
Exit For
Next instance
applicationDevice.SetDataFormat(DeviceDataFormat.Joystick)
applicationDevice.SetCooperativeLevel(Me, CooperativeLevelFlags.Exclusive Or CooperativeLevelFlags.Foreground)
Dim d As DeviceObjectInstance
For Each d In applicationDevice.Objects
If 0 <> (d.ObjectId And CInt(DeviceObjectTypeFlags.Axis)) Then
applicationDevice.Properties.SetRange(ParameterHow.ById, d.ObjectId, New InputRange(-1000, +1000))
End If
Next d
Return True
End Function
Public Sub GetData()
If Nothing Is applicationDevice Then
Return
End If
Try
applicationDevice.Poll()
Catch inputex As InputException
If TypeOf inputex Is NotAcquiredException Or TypeOf inputex Is InputLostException Then
Try
applicationDevice.Acquire()
Catch
Return
End Try
End If
End Try
Try
state = applicationDevice.CurrentJoystickState
Catch
Return
End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
InitDirectInput()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
GetData() 'Joystick Position erfassen
Label1.Text = "Eixos: LX = " + state.X.ToString() _
& vbCrLf & " LY = " + state.Y.ToString _
& vbCrLf & " RX = " + state.Rz.ToString _
& vbCrLf & " RY = " + state.Z.ToString ' Anzeigen der Sticks
Label2.Text = "Botões : " _
& vbCrLf & state.GetButtons(0) _
& vbCrLf & state.GetButtons(1) _
& vbCrLf & state.GetButtons(2) _
& vbCrLf & state.GetButtons(3) _
& vbCrLf & state.GetButtons(4) _
& vbCrLf & state.GetButtons(5) _
& vbCrLf & state.GetButtons(6) _
& vbCrLf & state.GetButtons(7) _
& vbCrLf & state.GetButtons(8) _
& vbCrLf & state.GetButtons(9) _
& vbCrLf & state.GetButtons(10) _
& vbCrLf & state.GetButtons(11) _
& vbCrLf & state.GetButtons(12) _
& vbCrLf & state.GetButtons(13) _
& vbCrLf & state.GetButtons(14) _
& vbCrLf & state.GetButtons(15) ' Ausgabe der Tasten
'applicationDevice.SendForceFeedbackCommand(ForceFeedbackCommand.SetActuatorsOn)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If Timer1.Enabled = False Then
Timer1.Enabled = True
Else
Timer1.Enabled = False
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 100
End Sub
End Class
bem, visto que ninguém respondeu, venho então comunicar que já está resolvido.
o que pus acima não pode ser compilado em .Net Framework 4, tem de ser em 2 ou menos.
mas pronto, obrigado pelas views.
boa noite pessoal!
vou brincar com o meu joystick!