Hej Ett alternativ är att sätta en global flagga. Kan du inte sätta RS232Locked utanför loopen? är myfunc1 asynkron? Jag har doevents i readrs232.Att avsluta en funktion innan nästa anropas.
Mitt program ser ut så här ungefär.
sub Myfunc1
do until Buffer > 3
ReadRS232()
Loop
end sub
sub Button1_click
WriteRS232("text")
end sub
Om jag nu klickar på button1 så vill jag vara säker på att anropet till ReadRS232 är färdigt
innan jag försöker skriva till RS232
Har testat att göra på följande sätt
sub Myfunc1
Dim MyTimeout=750 'Tid i millisekunder
do until Buffer > 3
RS232Locked = true
ReadRS232(MyTimeout)
RS232Locked = False
Loop
end sub
sub Button1_click
do until RS232Locked = False
System.Windows.Forms.Application.DoEvents()
loop
WriteRS232("text")
end sub
Men får det inte att funka.
Hur gör jag för att låta anropet till ReadRS232 avslutas innan jag går vidare.Sv: Att avsluta en funktion innan nästa anropas.
Private m_boolReading as boolean
sub Myfunc1
m_boolReading = true
do until Buffer > 3
ReadRS232()
doevents
Loop
m_boolReading = false
end sub
sub Button1_click
if m_boolReading = false then
WriteRS232("text")
end if
end subSv: Att avsluta en funktion innan nästa anropas.
ThomasSv: Att avsluta en funktion innan nästa anropas.
ligger det doevents i readrs232?
annars är det ju inte ett problem , då kommer ju myfunc1 alltid att avslutas innan något annat skerSv:Att avsluta en funktion innan nästa anropas.
Men den avslutas inte, utan den stannar och fortsätter när jag avslutar button1.