Avatar billede DTP Novice
06. december 2003 - 01:12 Der er 19 kommentarer og
1 løsning

mit program "hænger"

Hej

Jeg sidder og laver et program som kommunikerer med et modem, og helt i starten af min kode har jeg skrevet følgende:

Do While MSComm1.InBufferCount = 0
Loop

mrn det får mit program til at hænge(vil ikke vise min form før mscomm1.inbuffercount bliver > 0), da den ikke udfører det kode der står under............. er der nogen der kan hjælpe mig ? jeg vil gerne have at mit program kører, men LIGESÅSNART mscomm1.inbuffercount > 0 skal programmet udføre "noget kode".

jeg kunne selvfølgelig bare indføre linjen:

if mscomm1.inbuffercount > 0 then goto DetRigtigeSted

en masse forskellige steder i min kode, MEN det ser jo grimt ud ad H til.

HJææææææææææææææææææææææææælp !

:o)
Avatar billede DTP Novice
06. december 2003 - 01:16 #1
Private Sub Form_Load()

Do While MSComm1.InBufferCount = 0
Loop

"noget kode"

End sub
Avatar billede thesurfer Nybegynder
06. december 2003 - 01:18 #2
Prøv:

Do While MSComm1.InBufferCount = 0
DoEvents
Loop
Avatar billede DTP Novice
06. december 2003 - 01:23 #3
nu "hænger" mit program ikke, MEN mit program/form "dukker" ikke op !!

forskellen fra før er at nu kan jeg trykke på stop-knappen, mit program hænger ikke mere
Avatar billede thesurfer Nybegynder
06. december 2003 - 01:40 #4
DoEvents giver andre "ting" (funktioner osv) lov til at blive udført..
Der er ikke godt at sætte krævende kode i form_load.
Det er bedre at få en timer til at udføre en funktion efter 1 sec, eller 100 ms.. det skal bare være efter form_load er færdig med at afvikle kode..

Prøv f.eks. en Timer1 med intervallet 1 sekund (1000 ms):

Private Sub Timer1_Timer()
Timer1.Interval = 0
Do While MSComm1.InBufferCount = 0
DoEvents
Loop
end sub
Avatar billede DTP Novice
06. december 2003 - 02:01 #5
hmm...jeg er ikke HEEEEEEEEELT med...men

Private Sub Timer1_Timer()
Timer1.Interval = 0    'er det her jeg kan skrive hvor mange ms ?
Do While MSComm1.InBufferCount = 0
DoEvents
Loop
      'det der skal ske når mscomm1.inbufferCount bliver > 0, skal det     
      'stå her ????????
end sub
Avatar billede thesurfer Nybegynder
06. december 2003 - 02:06 #6
Timeren skal slukkes.. ellers sætter den sig fast i en loop der hele tiden prøver på at kører din loop.. ikke godt..:
Timer1.Interval = 0

Private Sub Timer1_Timer()
Timer1.Interval = 0    'er det her jeg kan skrive hvor mange ms ?
Do While MSComm1.InBufferCount = 0
DoEvents
' her indsætter du den kode der skal udføres sålænge at MSComm1.InBufferCount= 0
Loop
' koden der skal udføres når MSComm1.InBufferCount ikke længere er 0, dvs <> 0, står her.
end sub

Du sætter intervallet (ms) i egenskaber for timeren.. ikke i koden..
Avatar billede DTP Novice
06. december 2003 - 02:10 #7
Vil det sige ? :

Private Sub Form_Load()

timer1.interval=(1000)

KODE


End Sub
_______________________________________________________________________________

Private Sub Timer1_Timer()
Timer1.Interval = 0    'her slukkes timeren ?
Do While MSComm1.InBufferCount = 0
DoEvents
' her indsætter du den kode der skal udføres sålænge at MSComm1.InBufferCount= 0
Loop
' koden der skal udføres når MSComm1.InBufferCount ikke længere er 0, dvs <> 0, står her.
end sub


er det rigtig forstået ?
Avatar billede DTP Novice
06. december 2003 - 02:14 #8
øhh jeg mener:

Private Sub Form_Load()


KODE


timer1.interval=(1000)



End Sub
_______________________________________________________________________________

Private Sub Timer1_Timer()
Timer1.Interval = 0    'her slukkes timeren ?
Do While MSComm1.InBufferCount = 0
DoEvents
' her indsætter du den kode der skal udføres sålænge at MSComm1.InBufferCount= 0
Loop
' koden der skal udføres når MSComm1.InBufferCount ikke længere er 0, dvs <> 0, står her.
end sub



er DÉT så rigtigt ? timeren skulle være EFTER koden...ik'?
Avatar billede thesurfer Nybegynder
06. december 2003 - 02:18 #9
Ja.
Du behøver ikke () om timer1.interval=(1000)..
Avatar billede thesurfer Nybegynder
06. december 2003 - 02:20 #10
"timeren skulle være EFTER koden...ik'?"
Det er lige meget hvor timer-koden er placeret henne.. sådan som du har det er skulle være fint nok :)
Avatar billede DTP Novice
06. december 2003 - 02:21 #11
okay MANGE tak for hjælpen og tålmodigheden....jeg er ny i vb

pointene er dine
Avatar billede thesurfer Nybegynder
06. december 2003 - 02:21 #12
rettelse.. timer-sub'en.. ikke timer-koden..
timer-koden skal være i timer-sub'en.. timer-sub'en kan du placere hvor du vil.. bare ikke i en anden sub eller funktion :)
Avatar billede DTP Novice
06. december 2003 - 02:22 #13
okay så det er totalt ligegyldigt hvor timer-koden placeres, den starter den bare
Avatar billede thesurfer Nybegynder
06. december 2003 - 02:22 #14
Hvis du ikke har fået det til at virker, skal jeg ikke have points endnu..
Hvis det virker, skal du lige sige til, så vil jeg lægge et svar som du kan acceptere..
Avatar billede DTP Novice
06. december 2003 - 02:23 #15
okay timer-sub'en  *G*
Avatar billede DTP Novice
06. december 2003 - 02:23 #16
okay jeg vender tilbage
Avatar billede DTP Novice
06. december 2003 - 02:37 #17
Hey hey det wærker do !

:o)
Avatar billede thesurfer Nybegynder
06. december 2003 - 02:37 #18
Så lægger jeg et svar :)
Avatar billede thesurfer Nybegynder
06. december 2003 - 02:38 #19
Takker for points :)
Held og lykke med din programmering :)
Avatar billede DTP Novice
06. december 2003 - 02:39 #20
SELV tak du !
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