Avatar billede Slettet bruger
28. oktober 2003 - 17:13 Der er 12 kommentarer og
2 løsninger

Så længe knap er nedtrykket - udfør kode

Hej alle x-perter!

Sidder med et lille problem i Visual Basic.

Jeg har tilkoblet et dome-kamera til min serielport.

Ved at sende en ASCII-kode er det muligt at få kameraet til at panorere, zoome, tilte og meget andet.

P.t. er jeg ved at programmere et brugerinterface, hvorfra det skal være muligt at kontrollere kameraet (eksempelvis zoome, panorere osv.)

Er det muligt at udføre en stump kode, sålænge at knappen trykkes ned af brugeren?

Altså ligesom når man skruer op for volumen på en fjernbetjening: Sålænge man holder knappen nede, ja så skrues der enten op eller ned for volumen

Jeg har fået det til at virke med checkboxe - når man sætter et flueben så zoomer kameraet, og når man fjerner fluebenet stopper kameraet med at zoome.
Det virker dog en smule kikset at gøre det på denne måde, og jeg vil derfor gerne have det til at virke som en knap-funktion i stedet..
Avatar billede kjeld_klit Nybegynder
28. oktober 2003 - 17:21 #1
Kan du ikke bruge MouseDown og MouseUp på til at registrere hvornår koden skal starte stoppe?
Avatar billede Slettet bruger
28. oktober 2003 - 17:29 #2
//kjeld klit

Det lyder som en mulig løsning...
Jeg vender lige tilbage når jeg har fået det afprøvet..

P.S.: Skylder vist at sige at jeg er ret ny i VB, så derfor er det måske et meget let spørgsmål?
Avatar billede thesurfer Nybegynder
28. oktober 2003 - 17:32 #3
' Det her er testet og virker.
' Objekter:
' - CommandButton, "Command1"
' - Label, "Label1"
' - Timer, "Timer1"

Option Explicit
Dim i

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Interval = 1
End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Interval = 0
End Sub

Private Sub Form_Load()
i = 0
End Sub

Private Sub Timer1_Timer()
i = i + 1
Label1.Caption = i
End Sub
Avatar billede kjeld_klit Nybegynder
28. oktober 2003 - 17:44 #4
Det her gør som du ønsker:

Dim MyVar As Boolean
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MyVar = True
If MyVar = True Then
    Do While MyVar = True
        Text1 = Text1 + 1
        Refresh
        DoEvents
    Loop
End If

End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MyVar = False
End Sub

Private Sub Form_Load()
Text1 = 0
End Sub
Avatar billede thesurfer Nybegynder
28. oktober 2003 - 17:48 #5
kjeld_klit> din kode sætter sig fast og looper hele tiden. Den stopper efter et stykke tid, men ikke lige når man slipper knappen.
Den fortsætter indtil loopen er færdig (eller noget i den stil).
Avatar billede kjeld_klit Nybegynder
28. oktober 2003 - 17:52 #6
Nej - ikke hos mig

DoEvents gør fri til at stoppe når det skal være
Avatar billede thesurfer Nybegynder
28. oktober 2003 - 17:55 #7
det gør den hos mig.. den stopper ca 1 - 2 sekunder efter mouseup
Avatar billede kjeld_klit Nybegynder
28. oktober 2003 - 17:59 #8
Mystisk - Jeg har prøvet at copy/paste koden her fra Eksp. og den virker som den skal, jeg kan ikke provekere en fejl frem!

Do Loop var også bare et eksempel på at lave noget medens MouseDown = True
Avatar billede kjeld_klit Nybegynder
28. oktober 2003 - 18:06 #9
...og hvis den skal tælle den anden vej kunne man gøre sådan:

MyVar = True
If Button = vbLeftButton Then
    If MyVar = True Then
        Do While MyVar = True
            Text1 = Text1 + 1
            Refresh
            DoEvents
        Loop
    End If
End If
If Button = vbRightButton Then
    If MyVar = True Then
        Do While MyVar = True
            If Text1 = 0 Then Exit Do
            Text1 = Text1 - 1
            Refresh
            DoEvents
        Loop
    End If
End If
End Sub
Avatar billede kjeld_klit Nybegynder
28. oktober 2003 - 18:07 #10
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Mangler selvfølgelif øverst
Avatar billede thesurfer Nybegynder
28. oktober 2003 - 18:34 #11
Nå, men jeg bliver lige nød til at smutte..
Jeg ligger et svar, hvis du nu kunne bruge min hjælp.
Avatar billede Slettet bruger
28. oktober 2003 - 18:57 #12
//thesurfer & kjeld klit

Supergodt, at vi har noget som hedder eksperten.dk - hurtige og kompetente svar.
Jeg har afprøvet begge kodeeksempeler i VB.
Begge virker tilsyneladende perfekt (har ikke oplevet samme problemer som thesurfer).
Jeg har endnu ikke testet det i forhold til kameraet, men forsøger her i løbet af aftenen...
Avatar billede Slettet bruger
28. oktober 2003 - 22:33 #13
//thesurfer & kjeld klit

Så har jeg endelig fået afprøvet jeres forslag.
Ser ud til at det kun er et spørgsmål om finpudsning (altså i forhold til kameraet. Producenten har været så "smart" at kameraet panorerer i 2,2 sekunder før det timer ud. Jeg skal se om jeg kan nedsætte denne tid eller helt eliminere det...)

Tid til point uddeling!
Tak for hjælpen!
Avatar billede thesurfer Nybegynder
28. oktober 2003 - 23:34 #14
Takker for points.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen

Zealand – Sjællands Erhvervsakademi S/I

Erfaren IT-projektleder med stærk teknisk indsigt

JP/Politikens Hus

Digital Workplace Supporter