RS232 zu UC

  • VB6

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Hallo an alle :)

    Und zwar hätt ich eine kleine Frage ....

    Ich habe mir eine kleine Schaltung aufgebaut wo zwei Uc miteinander über die Rs232 schnittstelle daten austauschen können.
    Nun möchte ich peer VB6 eine Form erstellen wo ich z.b ein Button habe und wenn ich da drauf drücke soll peer RS232 8bit gesendet werden (0000-0101)
    Klar hab ich die Suchfuntion benutz sowie auch google bin da auch fündig geworden aber kommt mit den ´Code stücken die da angeborten werden nicht so ganz zurecht. So lautet meine Frage ob jemand von euch vielleicht einen Kleinen Code hat der das ganze realiesiert.

    Danke schonmal an alle

    Mfg Bqube
    So nun hab ich mir nach langer langer langer suche meine form zusammengebaut aber er meckert immer wenn ich versuche eine eins zu versenden was ist denn falsch ist doch eigentlich alles vorhanden oder nicht.???

    Visual Basic-Quellcode

    1. Private Sub Command1_Click()
    2. MSComm1.Output = "1"
    3. End Sub
    4. Private Sub MSComm1_OnComm()
    5. With MSComm1
    6. .CommPort = 1
    7. .Settings = "9600,N,8,1"
    8. .PortOpen = True
    9. End Sub

    und wenn ich es versende müsste doch an meinem uc auch eine eins ankommen also 0000-0001

    Mfg bqube
    So hab nomma was versucht nun meckert er nicht mehr das der Port geschlossen ist wird über nen Button geöffnen aber woher weiß ich ob meine 1 gesendet wird kann das denn so funtionieren...

    Visual Basic-Quellcode

    1. Private Sub Command1_Click()
    2. MSComm1.Output = "1"
    3. End Sub
    4. Private Sub Command2_Click()
    5. MSComm1.CommPort = 13
    6. MSComm1.PortOpen = True
    7. End Sub
    8. Private Sub Form_Load()
    9. End Sub
    10. Private Sub MSComm1_OnComm()
    11. With MSComm1
    12. .PortOpen = True
    13. .CommPort = 13
    14. .Settings = "9600,N,8,1"
    15. .PortOpen = True
    16. End Sub


    Mfg Bqube
    nein, da:
    "1" != 1

    "1" ist ein String bestehend aus zwei zeichen einmal dem Byte Wert 49 und einmal das terminierende Null-Byte...
    ob das terminierende denn mitgesendet wird, weiß ich nicht, aber gehört zu nem String normalerweise dazu ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Das Sub OnComm ist falsch. Den Port öffnen und senden hast Du schon geschafft. Im OnComm kannst Du Fehler abfragen, bzw. eingehenden Text sammeln / auswerten. Zum Senden wird sie nicht unbedingt benötigt. Irgendwo sollte hier im Forum ein Beispiel von mir sein.

    Die MSDN hat da vollständige Beispiele.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Soo da bin ich mal wieder hab mir eben noch schnell ein NullModem Kabel gebastelt und sieh da es kommt was an zahlen und wörter also Ascii sind gut angekommen aber das mit den binär schicken hab ich noch net so ganz verstanden und das was peterfido meinte.

    Also hier mein Code den ich Momentan hab

    Visual Basic-Quellcode

    1. Private Sub Command1_Click()
    2. MSComm1.Output = Chr(2)
    3. End Sub
    4. Private Sub Command2_Click()
    5. MSComm1.CommPort = 13
    6. MSComm1.PortOpen = True
    7. End Sub
    8. Private Sub MSComm1_OnComm()
    9. With MSComm1
    10. .PortOpen = True
    11. .CommPort = 13
    12. .Settings = "9600,N,8,1"
    13. .PortOpen = True
    14. End Sub


    Also Peter muss ich in der OnComm nix ausser den Port und die Sittings rein schreiben oder wie war das genau gemeint ?

    Zweites kommt so wenn ich auf senden Drücken würde 0000-0011 an oder wieder ne 2 ??

    Mfg Bqube
    OnComm() brauchste wenn du etwas auf dem ComPort empfangen möchtest. OnComm wird also auch nur ausgeführt wenn der ComPort offen ist, also bringt es absolut nichts wenn etwas beim ComPort eintrifft, DANN den Port zu defininieren und öffnen.

    Das ist so als wenn jemand durch die Tür in dein Haus geht und du ihm anschließend erst den Schlüssel für die Tür gibst.

    Über RS232 werden ASCII Zeichen übertragen, wenn du also den Bytewert von 2 senden willst, musst du das ASCII Zeichen mit der Nummer 2 senden, was CHR(2) auch macht. Im MC kannst du dieses Zeichen dann als 2 auswerten.