vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: StackOverFlow / Grundsätzliches 
Autor: roadresident
Datum: 05.01.07 09:29

Hallo Ralf, hallo ihr anderen.
Dank Dir für Deine Ausführungen. Habe ein paar Tests gemacht, das nacheinander Aufrufen klappt bei einfachen Funktionen wie

Private Sub RoutineA()
         Dim i = 1
        For i = 1 To 10
            Debug.Print("Routine A: Ich zähl mal: " & i)
        Next
End Sub
ganz gut. In meiner Anwendung hingegen, schicke ich einen Messbefehl über einen Seriellen port zu einem Messgerät. Dieses braucht ein paar Sekunden, bis es seine Antwort über den seriellen port zurückschickt. Dies löst dann den ComPort.DataReceived event aus, der dann die Daten den Messgeräts verarbeitet.
Private Sub messen()
comport.writeline(M) 'Messbefehl
End Sub
Empfangen der Messdaten
    Private Sub Receiver1(ByVal sender As Object, ByVal e As _
      SerialDataReceivedEventArgs) Handles ComPort6.DataReceived
        RXString1 = ComPort6.ReadLine()
        BeginInvoke(New StringSubPointer(AddressOf Display), RXString1)
    End Sub
Auswerten der Messdaten:
    Private Sub Display(ByVal Buffer As String)
        arrayt1 = Buffer.Split(",")   
        t1h = CDbl(arrayt1(2))       
        t1h = (t1h * 3.4262591)  
        t1x = arrayt1(3)
        t1y = CDbl(arrayt1(4))
        arrayt1t(2) = t1h             
        arrayt1t(3) = t1x
        arrayt1t(4) = t1y
        tb_1h.Text = CInt(arrayt1t(2)) 
        tb_1x.Text = arrayt1t(3)
        tb_1y.Text = arrayt1t(4)
    End Sub
Was ich erstmal erreichen möchte, ist eine 2 malige Messung und Auswertung hintereinander. Wenn ich es so machte, wie Du es vorgeschlagen hast, würde das so aussehen:
messen()
messen()
Es passiert leider Folgendes:
Ein Messbefehl wird gesendet, "messen()" ist beendet, das Programm springt zurück und ruft DIREKT wieder "messen()" auf. Natürlich geht das so schnell, dass das Messgerät den ersten Befehl noch gar nicht richtg verarbeitet hat, und noch gar keine Messung durchgeführt wurde. Das Messgerät erhält zwei Messbefehle direkt nacheinander und weiß nicht, was es machen soll.

Was ich also brauche, wäre eine Möglichkeit, dass der zweite Befehl ("messen()" erst dann abgearbeitet wird, wenn der erste Befehl abgearbeitet wurde UND das Messergebnis verarbeitet wurde.
Wie kann man so was realisieren?
Ich habe es mal hiermit probiert:
Private Sub idle()
If messen1 = False Then
messen()
End If
If messen1 = True Then
messen()
End If
    End Sub
dann wird in der routine "Display" am Ende das Flag messen1 = true gesetzt und messen() aufgerufen. Das funktioniert auch. Nur: Ruft dann nicht wieder eine Funktion die andere auf? Ich drehe mich also wieder im Kreise, oder? Wenn ich das auf mein (großes) Programm ummünze, läuft also alles wieder auf einen Overflow heraus-> idle() ruft messen() auf. Display ruft idle() auf. idle() ruft messen() auf und so weiter...

Wie könnte man die Zeit, die das Messgerät braucht ausgleichen?
Ich habe schon über eine schleife nachgedacht, die in idle() abläuft. Diese läuft dann so lange, bis dioe Auswertung fertig ist. Aber ich habe es nicht geschafft, diese zu realisieren.

Ich hoffe, Du und ihr versteht die Problematik, vor der ich gerade stehe und könnt mir weiterhelfen...
Besten Dank!!

DJ Booking + Veranstaltungstechnik: www.roadresidents.de

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
StackOverFlow / Grundsätzliches1.018roadresident04.01.07 16:32
Re: StackOverFlow / Grundsätzliches817Moderatorralf_oop04.01.07 17:52
Re: StackOverFlow / Grundsätzliches685roadresident04.01.07 18:01
Re: StackOverFlow / Grundsätzliches720Moderatorralf_oop04.01.07 22:29
Re: StackOverFlow / Grundsätzliches713roadresident05.01.07 09:29
Re: StackOverFlow / Grundsätzliches682roadresident08.01.07 11:42
Re: StackOverFlow / Grundsätzliches737GPM08.01.07 14:24
Re: StackOverFlow / Grundsätzliches697roadresident08.01.07 14:58
Re: StackOverFlow / Grundsätzliches772roadresident10.01.07 17:49

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel