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-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Mehrere Befehle über RS232 senden/empfangen 
Autor: Bibobernie
Datum: 29.06.12 11:47

Hallo

Ich probiere schon ein paar Stunden rum mehrere Befehle hintereinander über eine Serielle Schnittstelle zu versenden . Nun hoffe ich das mir hier jemand helfen kann.

Folgendes hab ich vor:

Ich möchte ein Programm schreiben mit dessen Hilfe ich Messwerte aufnehmen und später auch mit den Charts visualisieren und auswerten kann. Unter anderem habe ich dazu zwei Messgeräte welche über die RS232-Schnittstellen befehle erhalten und daraufhin Messwerte senden.
Leider benötige ich zwei verschiedene Befehle um alle Messwerte abzufragen. Die Abfrage selbst erledige ich Timergesteuert, derzeit alle 1000ms, später variabel. Der Empfang ist vermutlich eher unelegant gelöst indem ich einfach warte bis ein Abschlusszeichen an der Schnittstelle ankommt (mit .readto(vbCR)). Oh, und jedes Messgerät erhält eine eigene serielle Schnittstelle (SerPortZ1 und SerPortZ2).

Wenn ich nur einen Befehl sende klappt der Empfang super. Wenn ich aber den zweiten befehl sende kommt es immer zum Timeout des zweiten Befehls . Hier erstmal der Code:

    Private Delegate Sub DelegateSub()
    Private Verarbeitung As New DelegateSub(AddressOf Wertübergabe)
    Private i As Integer = 0
 
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles Timer1.Tick
        If i Mod 2 = 0 Then
            Blinker.FillColor = Color.LightGreen
        Else
            Blinker.FillColor = Color.Red
        End If
 
        AufnahmeUTI()  'Aufruf für ersten Befehl (Problemlos)
        AufnahmeO2()   'Aufruf für zweiten Befehl (Timeout:()
 
        i += 1
    End Sub
 
    Private Sub AufnahmeUTI() 'Erster Befehl
 
        If SerPortZ1.IsOpen = True Then
            Try
                SerPortZ1.Write(CGlobal.ComBefehle.ReadAll)
                Dateneingang(SerPortZ1)
            Catch ex As Exception
                MessageBox.Show("Übertragungsfehler Zelle 1", "Fehler")
            End Try
        End If
 
        If SerPortZ2.IsOpen = True Then
            Try
                SerPortZ2.Write(CGlobal.ComBefehle.ReadAll)     'U,T,I
                Dateneingang(SerPortZ2)
            Catch ex As Exception
                MessageBox.Show("Übertragungsfehler Zelle 2", "Fehler")
            End Try
        End If
 
    End Sub
 
    Private Sub AufnahmeO2() 'Zweiter Befehl
 
        If SerPortZ1.IsOpen = True Then
            Try
                SerPortZ1.Write(CGlobal.ComBefehle.ReadMessW1)
                Dateneingang(SerPortZ1)
            Catch ex As Exception
                MessageBox.Show("Übertragungsfehler")
            End Try
        End If
 
        If SerPortZ2.IsOpen = True Then
            Try
                SerPortZ2.Write(CGlobal.ComBefehle.ReadMessW1)  'O2
                Dateneingang(SerPortZ2)
            Catch ex As Exception
                MessageBox.Show("Übertragungsfehler")
            End Try
        End If
 
    End Sub
 
    Private Sub Dateneingang(ByVal Port As SerialPort) 'Empfangene Daten in 
    ' Globale Variable schreiben
 
        If Port.PortName = SerPortZ1.PortName Then
 
            Try
                CGlobal.EmpfangenZ1 = SerPortZ1.ReadTo(vbCr)
                Me.Invoke(Verarbeitung)          'Delegate hier wichtig da 
                ' Serport nicht direkt in Textbox schreiben kann!
            Catch ex As System.TimeoutException
                MessageBox.Show("Timeout Zelle 1!")
            End Try
        Else
            Try
                CGlobal.EmpfangenZ2 = SerPortZ2.ReadTo(vbCr)
                Me.Invoke(Verarbeitung)          'Delegate hier wichtig da 
                ' Serport nicht direkt in Textbox schreiben kann!
            Catch ex As System.TimeoutException
                MessageBox.Show("Timeout Zelle 2!")
            End Try
        End If
    End Sub
Die globalen Variablen habe ich in die Klasse CGlobal ausgelagert. In die ganze Klassengeschichte muss ich mich erst noch richtig eingewöhnen (hab vorher mit VBA und VB5/6 gearbeitet). Leider habe ich noch nicht so viel Erfahrung mit .net, also nicht gleich schimpfen wenn mein Code an manchen Stellen extrem suboptimal sein sollte. Verbesserungsvorschläge nehm ich aber gern entgegen;).

Hat jemand einen Tip wie ich das senden/empfangen der Befehle hinbiegen kann damit das funktioniert?

Ahnungsloser ahnungsloser...

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Mehrere Befehle über RS232 senden/empfangen5.220Bibobernie29.06.12 11:47
Re: Mehrere Befehle über RS232 senden/empfangen4.097Bibobernie29.06.12 11:50
Re: Mehrere Befehle über RS232 senden/empfangen3.904Bibobernie29.06.12 15:16
Re: Mehrere Befehle über RS232 senden/empfangen3.989Bibobernie30.06.12 17:01
Re: Mehrere Befehle über RS232 senden/empfangen3.920xirton30.06.12 17:10
Re: Mehrere Befehle über RS232 senden/empfangen4.013Bibobernie30.06.12 17:58
Re: Mehrere Befehle über RS232 senden/empfangen4.054xirton30.06.12 18:10
Re: Mehrere Befehle über RS232 senden/empfangen3.951Preisser30.06.12 20:07
Re: Mehrere Befehle über RS232 senden/empfangen3.929xirton30.06.12 20:15
Re: Mehrere Befehle über RS232 senden/empfangen4.031Bibobernie01.07.12 13:49
Re: Mehrere Befehle über RS232 senden/empfangen3.898Bibobernie06.07.12 14:45
Re: Mehrere Befehle über RS232 senden/empfangen3.860xirton06.07.12 15:31
Re: Mehrere Befehle über RS232 senden/empfangen3.991Bibobernie06.07.12 16:41
Re: Mehrere Befehle über RS232 senden/empfangen3.897xirton06.07.12 16:54
Re: Mehrere Befehle über RS232 senden/empfangen3.985Preisser06.07.12 17:12
Re: Mehrere Befehle über RS232 senden/empfangen3.826xirton06.07.12 17:14
Re: Mehrere Befehle über RS232 senden/empfangen3.872Preisser06.07.12 17:00
Re: Mehrere Befehle über RS232 senden/empfangen3.897Bibobernie06.07.12 20:59
Re: Mehrere Befehle über RS232 senden/empfangen3.965Bibobernie08.07.12 00:01
Re: Mehrere Befehle über RS232 senden/empfangen4.049Preisser08.07.12 03:20
Re: Mehrere Befehle über RS232 senden/empfangen3.966Bibobernie08.07.12 10:29
Re: Mehrere Befehle über RS232 senden/empfangen3.882Preisser08.07.12 14:06
Re: Mehrere Befehle über RS232 senden/empfangen3.889Bibobernie09.07.12 22:08

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-2024 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