probleme ser. schnittstelle

  • VB6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    probleme ser. schnittstelle

    Hallo,

    ich versuche grade ein programm zu erstellen mit dessen hilfe ich über einen virtuellen comport 8 relais schalten kann. das ganze funktioniert soweit auch ganz gut. ich möchte jedes relais mit einer checkbox schalten. jedes relais einzeln lässt sich wunderbar schalten, nur sobald ich sagen wir mal 2 oder 3 relais gleichzeitig schalten möchte haut das nicht hin. wenn ich relais 1 einschalte und danach relais 2 dann setzt er ( logischerweise ) relais 1 wieder zurück. also ich stehe irgendwie auf dem schlauch. vieleicht kann mir einer von euch helfen. hab das ganze folgendermaßen versucht:


    Private Sub R1_click()
    If R1.Value = True Then
    End If
    If R1.Value = False Then
    SENDSTRING "00 Portc = " + Chr$(13)
    Else
    SENDSTRING "01 Portc = " + Chr$(13)
    End If
    End Sub


    Private Sub R2_click()
    If R2.Value = True Then
    End If
    If R2.Value = False Then
    SENDSTRING "00 Portc = " + Chr$(13)
    Else
    SENDSTRING "02 Portc = " + Chr$(13)

    End If
    End Sub

    dabei ist Portc der Port des Mikrocontrollers an dem die Relasi hängen

    ich hoffe jemand kann mir helfen
    vielen dank im voraus.

    Haupti
    Ich versuche das mal schnell ohne probieren. So habe ich das früher mal gemacht.
    Wobei die chkausg die Checkboxen als Array sind

    Visual Basic-Quellcode

    1. Private Sub chkAusg_Click(Index As Integer)
    2. Dim x As Byte
    3. Dim Bit_Wert
    4. Dim Sendebyte As Byte
    5. Sendebyte = 0
    6. Bit_Wert = 1
    7. For x = 1 To 8
    8. If chkAusg(x - 1).Value = 1 Then
    9. Sendebyte = Sendebyte + (Bit_Wert)
    10. End If
    11. Bit_Wert = Bit_Wert * 2
    12. Next
    13. sendstring Chr$(Sendebyte) & " Portc = " + Chr$(13)
    14. End Sub


    dann im Mikrocontroller nur den ersten Wert als byte speichern und dem Port zuweisen

    Quellcode

    1. dim ausg as byte
    2. ausg=asc(left(eingang,1))
    3. portc=ausg
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „peterfido“ ()

    Hallo,

    zuersteinmal vielen dank dafür. das problem ist leider das die relais folgendermaßen geschaltet werden.
    der wert 01 schaltet relais 1
    der wert 02 schaltet relais 2
    der wert 04 schaltet relais 3
    der wert 08 schaltet relais 4
    usw.

    wenn ich das richtig sehe werden in deinem beispiel die relais mit dem werten von 1 bis 8 geschaltet??

    mfg

    Haupti
    So ist es bei mir auch. Und wenn Du eine 03 Sendest, dann schalten Relais 1 und 2, usw. Die 1-8 sind die Indexe der Checkboxen. Prinzipiell auch jeweils die Relais Nummer. Probier es doch einfach mal aus. PS in welcher Sprache programmierst Du welchen Mikrocontroller?
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „peterfido“ ()

    leider funktioniert das ganze nicht. sobald ich die chkbox für das 2 relais anklicke schaltet der controller ( ein Mega 48 ) die ausgänge pc4und5 aber mehr nicht. vollkommen egal was ich sonnst noch anklicke.
    die firmware selber ist nicht von mir. ich weiß halt nur welchen wert ich wo hinschreiben muss damit am ausgang etwas passiert. wenn ich die daten welches relais anziehen soll, direkt an den controller sende ( via Terminal Programm ) funktioniert auch alles wunderbar
    Ach so. Ich dachte du proggst auch den AVR. Prinzipiell sollte es so wie bei mir gehen. evtl noch eine führende 0 mitsenden, wenn der Wert 1-Stellig ist.

    Du sendest ein 00, wenn du ein Relais ausschalten möchtest, jedoch musst du dir ja merken, welche Relais eingeschaltet sind und dieses berücksichtigen. Also z.B. Relais 1 und 2 an = 03. Um jetzt Relais 1 auszuschalten musst du 02 senden, damit Relais 2 anbleibt.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hallo,

    das mit der führenden null hat zumindest teilweise erfolg gebracht. ich kann jetzt die ersten 3 relais schalten ( also bei einstelligen zahlen die ersten 3 Relais sind ja zusammen 7 schalte ich das 4 müsste es ja 15 sein ) alles ab relais 4 lässt sich nicht mehr schalten.

    Visual Basic-Quellcode

    1. private Sub chkAusg_Click(Index As Integer)
    2. Dim x As Byte
    3. Dim Bit_Wert
    4. Dim Sendebyte As Byte
    5. Sendebyte = 0
    6. Bit_Wert = 1
    7. For x = 1 To 8
    8. If chkausg(x - 1).Value = 1 Then
    9. Sendebyte = Sendebyte + (Bit_Wert)
    10. End If
    11. Bit_Wert = Bit_Wert * 2
    12. Next
    13. SENDSTRING 0 & Sendebyte & " Portc = " + Chr$(13)




    End Sub