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:
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
- Private Sub Stückzahlen()
- Dim Instring As String
- Dim Datei As String
- Dim tmp() As Byte
- Dim tmpStr As String
- Dim StrArr() As String
- Dim I As Integer
- Dim DN As Integer
- Dim Val As Integer
- Datei = "C:\AzubiProjekt_2004\Daten\STUECKZA.txt"
- DN = FreeFile
- Open Datei For Binary As DN
- tmpStr = Space(LOF(DN))
- Get DN, , tmpStr
- Close DN
- Debug.Print tmpStr
- cmdList.AddItem tmpStr
- StrArr = Split(tmpStr, ",")
- ReDim tmp(0 To 1)
- For ct = 0 To UBound(StrArr)
- Val = CInt(StrArr(ct))
- COM.PortOpen = True 'ComPort Öffnen
- For I = 0 To 1
- tmp(I) = ((Val \ 256 ^ I) And &HFF)
- Next I
- Sleep 30 'Programm für 30ms schlafen legen
- COM.RTSEnable = True 'RTS leitung auf "1" setzen
- Sleep 50 'Programm für 50ms schlafen legen
- COM.RTSEnable = False 'RTS leitung auf "0" setzen
- COM.Output = tmp 'Wert über den ComPort ausgeben
- Buffer = "" 'Sende Buffer geleert
- Sleep 100 'Programm für 100ms schlafen legen
- Do Until COM.CTSHolding = True 'Auf Signal warten vom Mikrokontroller
- DoEvents
- Loop
- COM.RTSEnable = False 'RTS leitung auf "0" setzen
- COM.PortOpen = False 'ComPort nach der Übertragung wieder schließen
- Sleep 150 'Programm für 150ms schlafen legen
- Next ct 'nächste byte der Zahl
- nSek = 120 'Countdown zur nächsten aktualisierung
- End Sub