Serielle verbindung zum Mikroprozessor

  • VB6

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

    Serielle verbindung zum Mikroprozessor

    Hallo, ich habe schon lange nichts mehr mit VB gemacht und deshalb habe ich nun ein Problem.

    Ich möchte eine Serielle verbindung zu einem Mikroprozssor herstellen, was im Terminal auch wunderbar funktioniert. Wenn ich eine "1" sende Bekomme ich einen String zurück. Nur wird der nicht ganz in der Textbox angezeigt. Es sind immer nur die letzten Zeichen in der Box.
    Warum?

    Außerdem, auf dem Mikro ist ein C Programm das solange auf zeichen wartet bis ein ENTER "\r" kommt.
    Aber wenn ich "\r" sende bekomme ich eine fehler vom MikroP. Wie kann ich das machen?

    Ich habe grade den Code nicht hier sonst könnte ich den mit Posten aber vielleicht wisst ihr ja auch so wo das Problem ist.

    Mfg
    Jabberwock
    Spekulieren hilft dir nicht wirklich weiter. Der Code wäre schon hilfreich. Am sichersten fährst Du, wenn du ständig den Eingangsbuffer anfragst und dann bei >0 die Daten einliest. Denn das DataArrival Ergeignis kommt erst bei Erreichen der eingestellten Buffergröße.

    Kann sein, dass das Programm für µC in C geschrieben wurde, aber auf dem µC selbst wird ein Assembler-Programm laufen.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Ok stimmt, das Programm ist dann natürlich in Assambler. Ich habe jetzt mal meinen Code hier. Ansich funkioniert das Senden und empfangen, wird halt nur das letzt Zeichen
    angezeigt.

    Quellcode

    1. Private Sub MSComm1_OnComm()
    2. Dim Eingang As String
    3. Select Case MSComm1.CommEvent
    4. Case comOverrun: MsgBox "Datenverlust!"
    5. Case comRxOver: MsgBox "Datenverlust!"
    6. Case comEvReceive: Eingang = Eingang + MSComm1.Input
    7. End Select
    8. Text3.Text = Eingang
    9. End Sub
    10. Private Sub Form_Load()
    11. 'For Portzaehler = 1 To 16
    12. ' If PortTest(Portzaehler) Then
    13. ' MsgBox "COM" + Str(Portzaehler) + " verfügbar"
    14. 'End If
    15. 'Next
    16. MSComm1.CommPort = 1
    17. MSComm1.Settings = "9600,N,8,1"
    18. MSComm1.PortOpen = True
    19. MSComm1.RThreshold = 1
    20. MSComm1.SThreshold = 1
    21. MSComm1.InputLen = 0
    22. End Sub
    23. Private Sub Command1_Click()
    24. MSComm1.Output = "1"
    25. End Sub
    Das liegt daran, dass Du Eingang im Empfangssub definierst. Setz das Dim Eingang mal im Allgemeinen Bereich der Form ab, oder leg die Variable in ein Modul. Dort dann natürlich Public Eingang as String.

    Dann Eingang nach chr$(13) durchsuchen und bis dahin auswerten und so weiter.
    Gruß
    Peterfido

    Keine Unterstützung per PN!