Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB joystick

Sivun loppuun

Arto [05.05.2011 08:20:19]

#

öö mitä tarvitsen että saan luettua "ilotikun" asennon ja arvot sille tarkoitetusta portista?? vissiin VB6 tarvii jonkun lisä ohjelma tms jonka avulla voidaan lukea kys porttia?? portissahan on 4 "karvaa" joista voidaan lukea vastus arvoa(A/D muunninta) ja 4 boolen tyyppistä porttia.

neau33 [05.05.2011 08:56:09]

#

Moikka Arto!

Tsekkaa tämä

Arto [05.05.2011 15:37:15]

#

Kiitos!!

Arto [05.05.2011 18:36:00]

#

juups kistäköhän seuraava johtuu kun tää koodi on general osalla ja kun yrittää käynnistää ohjelmaa antaa seuraavan virhe ilmoituksen ja sinertää koodista kohdan

Dim ji As JOYINFOEX

user-definet type not defined

eli siis mistäs tää nyt sitte??

koodi kopioitu edellisestä linkistä. käyttiksenä xp sp3

Dim y, yg As Long
Dim start As Long
Dim status, i As Integer
Dim PortBits(8) As Integer
Dim PortNum As Long
Dim r As Long
Dim temp As Long
Dim xmax As Long
Dim xmin As Long
Dim xratg As Double
Dim ymax As Long
Dim ymin As Long
Dim yratg As Double
Dim formh As Long
Dim formw As Long
Dim ji As JOYINFOEX
Dim caps As JOYCAPS     ' joystick capabilities
Dim rc As Long

Private Sub Form_Load()
 ji.dwSize = Len(ji)
    ji.dwFlags = JOY_RETURNALL

    ' Get the current joystick data
    rc = joyGetPosEx(JOYSTICKID1, ji)

Mod. lisäsi kooditagit.

neau33 [05.05.2011 18:43:12]

#

Sori Arto!

Täältä löytyy tarvittavat julkiset funktiot, tyypit ja muuttujat

Arto [09.05.2011 18:35:38]

#

juu ei

öö voiskos joku selittää mikä tää api juttu nyt mitä joka sivuilla hyppii silmille. ja muutenkin jos joku jaksas juurtajaksaen selittää kuinka tän pitäs toimia??

neau33 [15.05.2011 12:54:00]

#

Moikka taas Arto!

WinAPI infoa

kokeile saatko oheisella koodilla ilotikustasi mitään irti

'Lomakkeelle:
'1 Timer kontrolli (Timer1)
'2 Labellia (Label1 & Label2)

Private Sub Form_Load()

   If StartJoystick Then
      Timer1.Interval = 250 'millisekuntia
      Timer1.Eanbled = True
   Else
      MsgBox "No JoyStick control found!"
   End If

End If

Private Sub Timer1_Timer()

   PollJoystick

   Dim i As Integer

   DoEvents
   For i JoyButtons(15)
      'Testi...
      If JoyButtons(i) Then
         Label1.Caption = "JoyButton" & Cstr(i)
         Label2.Caption = "X=" & CurrentJoyX & " Y=" & CurrentJoyY
      End If
   Next i

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
   Timer1.Enabled = False
End Sub
'Module1
Public Declare Function joyGetPosEx Lib "winmm.dll" _
(ByVal uJoyID As Long, pji As JOYINFOEX) As Long

Public Declare Function joyGetDevCapsA Lib "winmm.dll" _
(ByVal uJoyID As Long, pjc As JOYCAPS, ByVal cjc As Long) As Long

Public Type JOYCAPS
   wMid As Integer
   wPid As Integer
   szPname As String * 32
   wXmin As Long
   wXmax As Long
   wYmin As Long
   wYmax As Long
   wZmin As Long
   wZmax As Long
   wNumButtons As Long
   wPeriodMin As Long
   wPeriodMax As Long
   wRmin As Long
   wRmax As Long
   wUmin As Long
   wUmax As Long
   wVmin As Long
   wVmax As Long
   wCaps As Long
   wMaxAxes As Long
   wNumAxes As Long
   wMaxButtons As Long
   szRegKey As String * 32
   szOEMVxD As String * 260
End Type

Public Type JOYINFOEX
   dwSize As Long
   dwFlags As Long
   dwXpos As Long
   dwYpos As Long
   dwZpos As Long
   dwRpos As Long
   dwUpos As Long
   dwVpos As Long
   dwButtons As Long
   dwButtonNumber As Long
   dwPOV As Long
   dwReserved1 As Long
   dwReserved2 As Long
End Type

Public JoyNum As Long
Public MYJOYEX As JOYINFOEX
Public MYJOYCAPS As JOYCAPS
Public CenterX As Long
Public CenterY As Long
Public JoyButtons(15) as Boolean
Public CurrentJoyX As Long
Public CurrentJoyY As Long

Public Function StartJoystick( _
Optional ByVal JoystickNumber As Long = 0) As Boolean

   JoyNum = JoystickNumber

   'Get joystick info
   If joyGetDevCapsA(JoyNum, MYJOYCAPS, 404) <> 0 Then
         StartJoystick = False
   Else
      Call joyGetPosEx(JoyNum, MYJOYEX)
      CenterX = MYJOYEX.dwXpos
      CenterY = MYJOYEX.dwYpos
      StartJoystick = True
   End If

End Function

Public Sub PollJoystick()

   Dim i As Long
   Dim t As Long

   MYJOYEX.dwSize = 64
   MYJOYEX.dwFlags = 255

   ' Get the joystick information
   Call joyGetPosEx(JoyNum, MYJOYEX)

   t = MYJOYEX.dwButtons
   For i = 15 To 0 Step -1
         JoyButtons(i) = False
         If (2 ^ i) <= t Then
            t = t - (2 ^ i)
            JoyButtons(i) = True
         End If
   Next i

   CurrentJoyX = MYJOYEX.dwXpos
   CurrentJoyY = MYJOYEX.dwYpos

End Sub

neau33 [15.05.2011 20:33:47]

#

Edit:

Private Sub Timer1_Timer()

  '...

  'For i JoyButtons(15) tämän rivin tilalle
  For i = LBound(JoyButtons) To UBound(JoyButtons) 'tämä
  '...

Arto [16.05.2011 20:32:52]

#

KIITOS!!
nyt alan päästä vähä jyvälle kun sain toimimaankin, tai ainakin se herjaa puuttuvaa ilotikkua. huomenna liitin/ potikka kaupaan =)

onkos mitään helppoa konstia saada tuota toimimaan nopeammin, esim ennalta määrätyn ajan (2 sek) se ottas 10 Mhz tahdilla näytettä?? timerihän antaa vaan 1Khz. erilaisten väylien tutkintaan tätä arvelin... periaatteessa riittäisi kun tutkisi vaan nappi liitäntöjä.

Grez [16.05.2011 22:25:49]

#

Eipä taida minkään joystick-portin rauta tukea läheskään noin suurta päivitysnopeutta. Eli jos saat luettua 10MHz nopeudella, niin sieltä tulee sitten vaan kymmeniä kertoja sama luku.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta