Hallo liebes Forum, ich nutze einen STM32F4 im FS-Modus um Daten vom Microcontroller zum PC zusenden. Eigenschaften: - MC als Device only - Entsprechender Takt 48MHz - Befehl zum Senden der Daten CDC_Transmit_FS - Spannungsversorung des MC über ST-Link Zum jetzigen Zeitpunkt wird der MC vom PC als virtual com port erkannt. Auch werden die Daten entsprechend gesendet. Mit Realterm kann ich die Daten im Format uint8_t auslesen bis zu einem Wert von 255 auslesen. Versende ich Werte oberhalb von 255 erhalte ich beim Auslesen mit Realterm einen overflow, wodurch nicht die richtige Zahl angezeigt wird. Gleiches gilt beim Auslesen mit Matlab über die App SerialPort. Der Puffer im CDC_Transmit_FS - Befehl ist vom Format uint8_t. Liegt darin die Ursache im overflow? Einige Beispiele versenden mit dem Standardbefehl dennoch Werte >255. Ich nehme an, dass die Ermittlung der Werte im Rahmen einer geeigneten Dekodierung des USB-Signals erfolgt? Da es sich bei USB um ein vollständiges Protokoll handelt werden nach meinem Kenntnisstand mehr Informationen übertragen, als die reinen Daten. Wobei diese zusätzlichen Informationen gefiltert werden müssen, um den reinen Datenbestand zu erhalten? Bei der Suche bin ich auf folgenden Beitrag gestoßen: Beitrag "USB Pakete interpretieren" Dem bin ich auch gefolgt und habe Wireshark + USBPcap installiert. Die Datenaufzeichnung mit USBPcap erfolgte problemlos, das Dokument habe ich entsprechend in Wireshark geöffnet. Aus dem Datensalat werde ich allerdings nach wie vor nicht schlau. Ziel: Auslesen der gesendeten Daten im dekodierten Zustand + Auswertung in Matlab - Ist dies unmittelbar mit Matlab möglich oder wird dafür ein vorgeschalteter decoder benötigt? - Falls ein vorgeschalteter Decoder benötigt wird: Existieren hier bereits vorgefertigte Lösungen oder ist die eigenständige Programmierung unter Anwendung von libusb erforderlich? - Gibt es hierfür ein fertiges Programm, welches die Daten in Textdokument speichert, welches mit Matlab ausgelesen werden kann?
:
Bearbeitet durch User
Ist das ein Trollversuch!?? Sonst erklärt doch einfach mal, was du vorhast und warum du keinen Arduino verwendest...
Was war noch die größte Zahl, die in uint8_t passt?
S. W. schrieb: > Ich nehme an, dass die Ermittlung der Werte im Rahmen einer geeigneten > Dekodierung des USB-Signals erfolgt? Nö. In uint8 passt eben nur 0-255 rein. Probier' mal in ASCII umgewandelte Zahlen zu senden. sprintf kann dir helfen, muss aber nicht. mfg mf
255 ist die größte Zahl die in uint8 passt. Danke Problem gelöst! Der Code konnte auf uint16 angepasst werden, mein Musterbeispiel ging da einen anderen Weg.
> 255 ist die größte Zahl die in uint8 passt. > Danke Problem gelöst! Da faellt einem ja wirklich nichts mehr dazu ein. > (maschbauing) erklaert natuerlich alles.
Zu meiner Verteidigung, ich wusste dass 255 die maximale Zahl ist. Andernfalls hätte ich nicht vom overflow gesprochen. Dagegen wusste ich nicht, dass ich den Datentyp des Pufferspeichers einfach anpassen kann. Das war des Rätsels Lösung ;)
> >> (maschbauing) > erklaert natuerlich alles. Das nehme ich jetzt aber persönlich, bin ich doch auch so einer...
S. W. schrieb: > Zu meiner Verteidigung, ich wusste dass 255 die maximale Zahl ist. Da frage ich mich schon wie sich das erklärt dass du hier im Forum schon sieben Jahre angemeldet bist. Dornröschenschlaf? S. W. schrieb: > Das war des Rätsels Lösung Welches Rätsel? Von einem Rätsel war hier bislang nicht die Rede.
Das ist die Smartphone Generation - alles haben und benutzen wollen, ohne sich mit den Grundlagen zu befassen. Wer sich auskennt wird von denen als "Hacker" bezeichnet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.