Avatar billede Slettet bruger
18. november 2003 - 16:56 Der er 6 kommentarer og
1 løsning

input fra COM-port, listbox hele tiden up-to-date

Hej x-perter :-)

Håber I kan hjælpe mig et lille problem i VB.

Først en lille forklaring til hvordan programmet virker.

Der er x antal mikrofoner koblet til et mikrofonanlæg på COM-porten

I en listbox kan man skrive et deltager-navn ud for hver mikrofon.

Disse navne gemmes i et array.

I en ny listbox (kø-listbox) kan man se deltagerens navne efterhånden som de trykker sig ”ind” i køen.

Brugeren (af programmet) vælger hvornår en mikrofon skal aktiveres (ved tryk på en knap)

Når en mikrofon har været aktiv – fjernes den fra kø-listboxen..

Her er koden som gemmer navne i array efter hvem der trykker sig i kø (står hele tiden og ”lytter” på COM-porten)

Private Sub IO1_IOQueueEvent(ByVal NumCharsInputQue As Long, ByVal NumCharsOutputQue As Long)

If Left(Temp1, 2) = "R0" And (Mid(Temp1, 5, 1) = "A") Then    'Kontrol input data           

K = Val(Mid(Temp1, 3, 2)) 'Mikrofon nummer K
L = Val(Mid(Temp1, 6, 1)) 'Køplads nummer L
           
D = L
E = D    'Variabel som gemmer kø-pladsen
F = ""    'Variablen til at slette kø-plads
F = D    'Variablen for kø-plads slettes igen

Dim Str As String

Str = NavnMic(K) ‘array hvor deltagere gemmes når de oprettes

’Her tilføjes deltagernavne i kølisten efterhånden som de trykker sig ind

List2.AddItem Str
List4.AddItem (List4.ListIndex + E + 1)
                       
'Gennemløb køen
For W = 1 To 8
    'Hvis den aktuelle plads er tom så
    If Queue(W) = "" Then
          'Tilføj mikrofonen
          Queue(W) = Str
          Str = “”
    End If
Next W

Her er koden som bruger trykker på for at aktivere en mikrofon
'----------------------------------------------------------
'Koden til ’næste deltager’ knappen
'----------------------------------------------------------
Private Sub cmdNext_Click()
 
    IO1.WriteString "P067" & vbCr
    'Debug.Print "Mikrofon aktiv!"

    Dim I As Integer
   
    'Flyt alle andre mikrofoner en plads frem
    For I = 0 To 7
        Queue(I) = Queue(I + 1)
    Next I
   
    'Frigør den bagerste plads i køen.
    Queue(8) = ""
   
    Dim X As Integer
   
    List2.Clear
   
    For J = 1 To 8
        List2.AddItem Queue(J)
    Next J
   
End Sub
'----------------------------------------------------------

Selvom en mikrofon allerede har været aktiv – kan deltageren dog godt vælge at stille sig i kø igen, og det er her der går ged i den..

Navnet på deltageren dukker først op et godt stykke nede i listboxen for eksempel sådan her

deltager2
deltager3
deltager4
..(tomme pladser)
..(tomme pladser)
..(tomme pladser)
deltager1

Jeg er godt klar over at det skyldes mit array som har et vist antal pladser (Der kan p.ga. hardwarebegrænsninger maksimalt stå 9 mikrofoner i kø ad gangen)

Jeg har prøvet diverse krumspring med listindex m.m. – dog uden held

Er der nogen som gode forslag til hvordan jeg løser dette problem.??
Avatar billede kabbak Professor
18. november 2003 - 18:43 #1
Kan du ikke lave køen dynamisk mellem 1 til 8.
så køen ikke er længere end antal deltagere
Avatar billede kabbak Professor
18. november 2003 - 18:59 #2
For J = 1 To 8
    If Queue(J) <> "" Then ' forskellig fra tomme pladser
        List2.AddItem Queue(J)
    End If
    Next J
Avatar billede Slettet bruger
18. november 2003 - 19:00 #3
->kabbak

Du tænker på:

Redim Array(Antal_Mikrofoner)?

Gør lige et forsøg...
Avatar billede Slettet bruger
18. november 2003 - 19:02 #4
ok du kom først..
laver et forsøg med begge dele :-)
Avatar billede Slettet bruger
18. november 2003 - 20:10 #5
->Kabbak...

Fik gennemset noget mere af min kode, og det viste sig, at jeg havde fået

'Gennemløb køen
For W = 1 To 8
    'Hvis den aktuelle plads er tom så
    If Queue(W) = "" Then
          'Tilføj mikrofonen
          Queue(W) = Str
          Str = “”
    End If
Next W

placeret i en forkert if..then sætning..

Hmmm......
Derudover har jeg brugt dit eksempel i stedet for, og det fungerer super..

Tak for hjælpen...
Smid lige et svar, så får du point :->
Avatar billede kabbak Professor
18. november 2003 - 20:32 #6
ok, så et svar
Avatar billede Slettet bruger
18. november 2003 - 20:56 #7
ok så point :-)
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