Forum Pplware

Versão Completa: Joystick em Visual Studio 2010
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boa noite, pessoal!

Como tenho reparado, existe por aqui muita gente entendida em visual basic, e penso portanto que me poderão ajudar. Big Grin

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!
URL's de Referência