Hallo allerseits, ich möchte ein paar Einlese-Experimente mit der COM-Schnittstelle und einem 4021 über VB 2008 machen. Da ich nicht die ganze Programmlaufzeit eine Schleife laufen lassen möchte, die die COM-Schnittstelle ständig abfragt, möchte ich gern wissen, wie ich in VB eine Ereignisauslösung über einen Eingang an der COM ralisieren kann. Das soll heißen, ich nutze ein zusätzliches Eingangspin am Com welches immer gestetzt wird wenn eine Schaltzustandsänderung Eingangsseitig am 4021 anliegt. Welchen Eingang am Com kann ich dafür am besten benutzen und wie muß ich mir den Programmaufbau bzw. Ablauf vorstellen, damit bei einer Zustandsänderung am 4021 das Abfragen des IS's automtisch abläuft? Danke im voraus Gruß Tino
> Da ich nicht die ganze Programmlaufzeit eine Schleife laufen lassen > möchte, die die COM-Schnittstelle ständig abfragt, Das macht man auf einem PC auch nicht in einer Schleife (bzw. wenn dann in einem eigenen GUI-unabhängigen Thread), sonst hängt die Kiste. > Das soll heißen, ich nutze ein zusätzliches Eingangspin am Com welches > immer gestetzt wird wenn eine Schaltzustandsänderung Eingangsseitig am > 4021 anliegt. Weisst du wieviele verschiedene 4021-ICs es gibt? Schieberegister, digitale Potis, blablabla. Solltest halt schon die genaue Bezeichnung mal posten, damit wir wissen was du da hast... > Welchen Eingang am Com kann ich dafür am besten benutzen Entweder über einen Timer zyklisch auslesen (dann geht's ohne zusätzlichen Pin) oder über DSR/CTS-Pin-change-Events. > wie muß ich mir den Programmaufbau bzw. Ablauf vorstellen, damit bei einer > Zustandsänderung am 4021 das Abfragen des IS's automtisch abläuft? Sowohl bei Timer- als auch DSR/CTS-Implementierung reagierst du auf das entsprechende Event, indem du dann ausliest. Im Timerfall musst du durch einen Datenvergleich alt gegen neu entscheiden ob sich was getan hat, im anderen Fall signalisiert dir ja offensichtlich der unbekannte Chip die Änderung direkt. Ralf
Hallo die Programmierung zur Abfrage des Schieberegisters 4021 (parallel zu seriell) soll nicht im Vordergrund meiner Frage stehen! Was mich interessiert, wie kann ich dem VB-Programm mittels „DSR/CTS-Implementierung“ der Status an den Eingängen geändert hat, damit das einlesen der Daten beginnen kann! Die Timerlösung würde ich als zweite Möglichkeit in Betracht ziehen! Wie löse PinChangeEvent aus und wie reagiert VB darauf? Ich kenne mich damit überhaupt nicht aus! Kann mir jemand auf die Sprünge helfen? Danke! Gruß Tino
Bei "VB 2008" gehe ich mal von nem Visual Basic mit .Net-Framework aus: http://msdn.microsoft.com/en-us/library/system.io.ports.serialport_events.aspx
Hallo, Danke für die Hilfe!! Hab dann doch was im Netz gefunden und erfolgreich getestet! Public Class Form1 'Schalter zwischen DTR und CTS überwachen Private Delegate Sub Test() Private PegelWechsel As New Test(AddressOf Pinchange) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load SerialPort1.Open() SerialPort1.DtrEnable = True Pinchange() End Sub Private Sub SerialPort1_PinChanged(ByVal sender As Object, ByVal e As System.IO.Ports.SerialPinChangedEventArgs) Handles SerialPort1.PinChanged If e.EventType = IO.Ports.SerialPinChange.CtsChanged Then Me.Invoke(PegelWechsel) End If End Sub Private Sub Pinchange() If SerialPort1.CtsHolding Then Me.Text = "offen" Else Me.Text = "geschlossen" End If End Sub End Class Gruß Tino
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.