Problem beim Datenübertragen über den Comport

  • VB6

    Problem beim Datenübertragen über den Comport

    Hallo,

    Ich habe folgendes Problem:
    Ich will Daten die in einer Txt-Datei stehen (insgesamt 5 Werte jeweils durch ein Komma getrennt) über die Serielle Schnittstelle an einen µController senden. Der Controller nimmt die Werte auch an doch Sie sind völlig falsch.

    Jetzt habe ich 2 PCs über ein Serielles Kabel verbunden um zu sehen was mein Programm eigentlich raus sendet.
    Übertragung vom Laptop --> zu PC (auf dem PC habe ich Serial Watcher laufen um zu sehen was rein kommt)
    Das steht in meiner Txt-Datei: 10,20,30,40,50
    Und das kommt am PC an:
    0A 00 <--- Dieser Wert ist ok ich sende es Hexadezimal und das wäre dann die 10
    0A <--- Doch dieser wert ist nicht ok usw...
    14 00
    14
    1E 00
    1E
    28 00
    28
    32 00

    Wie man sieht schickt er immer eine unsinnige zahl zwischen die richtige zahl rein. Die zahlen mit den nullen hinten dran die brauche ich doch woher er jeweils noch die anderen zahlen nimmt weiß ich beim besten willen nicht.

    Mir ist folgendes aufgefallen: Wenn ich z.B. die Zahl 10 versende sendet er 0A 00 was auch korrekt ist doch wenn ich dann eine weiter zahl senden will, sendet er sofort nach dem ich den comport öffne die letzte zahl nochmal also diese 0A. Wieso ist das so ? ich habe in dem moment ja noch keinen befehl gegeben das er was senden soll ich habe nur den ComPort geöffnet.

    Hier mal mein CODE:

    Visual Basic-Quellcode

    1. Private Sub Stückzahlen()
    2. Dim Instring As String
    3. Dim Datei As String
    4. Dim tmp() As Byte
    5. Dim tmpStr As String
    6. Dim StrArr() As String
    7. Dim I As Integer
    8. Dim DN As Integer
    9. Dim Val As Integer
    10. Datei = "C:\AzubiProjekt_2004\Daten\STUECKZA.txt"
    11. DN = FreeFile
    12. Open Datei For Binary As DN
    13. tmpStr = Space(LOF(DN))
    14. Get DN, , tmpStr
    15. Close DN
    16. Debug.Print tmpStr
    17. cmdList.AddItem tmpStr
    18. StrArr = Split(tmpStr, ",")
    19. ReDim tmp(0 To 1)
    20. For ct = 0 To UBound(StrArr)
    21. Val = CInt(StrArr(ct))
    22. COM.PortOpen = True 'ComPort Öffnen
    23. For I = 0 To 1
    24. tmp(I) = ((Val \ 256 ^ I) And &HFF)
    25. Next I
    26. Sleep 30 'Programm für 30ms schlafen legen
    27. COM.RTSEnable = True 'RTS leitung auf "1" setzen
    28. Sleep 50 'Programm für 50ms schlafen legen
    29. COM.RTSEnable = False 'RTS leitung auf "0" setzen
    30. COM.Output = tmp 'Wert über den ComPort ausgeben
    31. Buffer = "" 'Sende Buffer geleert
    32. Sleep 100 'Programm für 100ms schlafen legen
    33. Do Until COM.CTSHolding = True 'Auf Signal warten vom Mikrokontroller
    34. DoEvents
    35. Loop
    36. COM.RTSEnable = False 'RTS leitung auf "0" setzen
    37. COM.PortOpen = False 'ComPort nach der Übertragung wieder schließen
    38. Sleep 150 'Programm für 150ms schlafen legen
    39. Next ct 'nächste byte der Zahl
    40. nSek = 120 'Countdown zur nächsten aktualisierung
    41. End Sub