www.mikrocontroller.net

Forum: PC-Programmierung Visual Basic


Autor: Edmund P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend alle zusammen !
Ich habe paar Fragen zur Sub-Prozedur und MSCOMM Control unter VB 6.0.
Wenn eine sehr grosse Sub-Prozedur abgearbeitet wird und gleichzeitig
ein OnComm-Ereigniss auftritt,wird die Abarbeitung der Sub-Prozedur
unterbrochen ?.Wenn ja wird das OnComm-Ereigniss ausgewertet und danach
die Sub-Prozedur fortgesetzt ?
Vielen Dank !
Mfg
Edmund P.

Autor: Tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Edmund,

tritt während der Bearbeitung der Sub ein OnComm- (oder ein beliebiges
anderes) Ereignis auf, wird zunächst deine Sub abgearbeitet und dann
(irgendwann!!!) die OnComm-Ereignisprozedur bearbeitet.

Wenn ein Datum am Comm-Port eintrifft, wird das Ereignis angemeldet.
Irgendwann, wenn das Betriebsystem meint, es ist Zeit dazu, wird das
Ereignis an dein Programm weitergegeben und die OnComm-Prozedur
bearbeitet. (So ist das bei einem Nicht-Echtzeit-OS).

Wenn Du nicht bis zum Ende deiner Sub warten willst, solltest du in
dieser ein (oder mehrere) DoEvent's einbauen. Beim Erreichen eines
DoEvent wird die Kontrolle an das OS abgegeben und anstehende
Ereignisse können Bearbeitet werden. DoEvents sollte man vor allem in
zeitintensiven Schleifen einbauen. Sonst kann mann das OS lahmlegen.
Z.B. mit

Do While 1=0
Loop

Allerdings ist der Einsatz von DoEvent nicht zu übertreiben, sonst
kommt dein Programm nur sehr zögerlich voran.

TD

Autor: Olaf Stieleke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, das kann ich so nicht stehenlassen.

Tatsächlich bemerkt das Betriebssystem praktisch sofort, das da was am
SIO angekommen ist. Tatsächlich aber sendet es eine Message an dein
Programm. Diese Message wird abgearbeitet und irgendwann bequemt sich
das MSCOMM dazu, jenen Event auszulösen.

Nun hängt es davon ab, wie oft diese Messagequeue (jedes Programm hat
eine) abgearbeitet wird. Wird in deiner Sub minutenlang herumgerechnet,
wird auch die Queue nicht abgefragt - man erkennt das immer daran, das
man das Fenster eines solchen Programms scheinbar nicht mehr bewegen
kann. In der Titelzeile taucht auch öfter ein "(keine
Rückmeldung...)" auf.

Ansonsten ist der Tip mit dem DoEvents goldrichtig.

Autor: Tastendrücker (Andreas) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Olaf
> "Tatsächlich bemerkt das Betriebssystem praktisch sofort..."

Was heist den "praktisch sofort"??? Eben nicht deterministisch. Du
weisst eben nicht genau, wann das Ereignis vom OS an das Programm (über
die Messagequeue) weitergegeben wird.

Also meinte ich:

1. Datum trifft ein
2. OS bebekommt das mit (wann?)
3. OS sendet Message an Programm (wann?)
4. Programm nimmt Ereignis war (wann?)
5. Programm bearbeitet Ereignis (OnComm) (wann?)

Die "wann's" sollen die Nichtvorhersagbarkeit anzeigen. Aber das
alles wollte Edmund glaube ich gar nicht wissen.

Andreas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.