www.mikrocontroller.net

Forum: PC-Programmierung VB 2008 Interrupt durch LPT Port?


Autor: christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hoffe mir kann wer helfen...

Ich möchte das mein Programm ganz normal abläuft, allerdings wenn sich 
ein Eingang am LPT port ändert soll das Programm unterbrochen werden.

Die Abfrage vom LPT port läuft schon.

Ich hab es mit einer DO LOOP Schleife probiert wo in der Schleife 
Application.DoEvents() drin steht, das funktioniert aber leider nicht, 
das Programm bleibt dann nur in der Schleife und macht sonst nichts...

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest einen Timer nehmen, im Timer_Tick Event den LPT abfragen und 
wenn er deinen gewünschten Zustand hat ein weiteres Event auslösen.

Autor: christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ganze sollte aber nur einmal als Funktion eingefügt werden, nicht 
das ich im Programm das immerwieder abfragen muss...

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist dein Programm ein Konsolenprogramm oder eines mit grafischer 
Oberfläche?

Autor: christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm hat eine Grafische oberfläche.

Der Interrupt soll als Notaus dienen...

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In deiner grafischen Oberfläche wird dann sowieso alles mit Events 
verarbeitet. Ein Klick auf einen Button löst auch einen solchen Event 
aus.

Wenn du jetzt nen Timer nimmst und das Intervall auf, sagen wir 30ms 
stellst und im Interrupt Handler deines Timers den LPT abfragst könntest 
du auch eine globale Variable verändern und diese in deiner Schleife 
abfragen:
bool NotAus = false;

[...]
void WaitForNotAus()
{
    while (NotAus == false)      // Oder while (!NotAus)
    {
         [mach dein Zeug]
        Application.DoEvents();   // Wichtig, da sonst der Timer Event nicht ausgelöst wird!!
    }
}
[...]

im Timer Event:

void Timer_Tick([...])
{
    if (checkLPT())
    {
        NotAus = true;
    }
}


Autor: christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok,

dann wer dich mal versuchen das in Basic zu übersetzen...

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh das als "Pseudocode" ;-)

An Sonsten könnte dir das helfen: 
http://www.developerfusion.com/tools/convert/csharp-to-vb/

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.