Forum: Mikrocontroller und Digitale Elektronik STM32 - USB - CDC (Virtual COM Port) - Decoder? - Wie Daten lesen?


von S. W. (maschbauing)


Lesenswert?

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
von Erwin (Gast)


Lesenswert?

Ist das ein Trollversuch!??

Sonst erklärt doch einfach mal, was du vorhast und warum du keinen 
Arduino verwendest...

von Klaus W. (mfgkw)


Lesenswert?

Was war noch die größte Zahl, die in uint8_t passt?

von Achim M. (minifloat)


Lesenswert?

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

von S. W. (maschbauing)


Lesenswert?

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.

von MMCX (Gast)


Lesenswert?

> 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.

von S. W. (maschbauing)


Lesenswert?

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 ;)

von Klaus W. (mfgkw)


Lesenswert?

>
>> (maschbauing)
> erklaert natuerlich alles.

Das nehme ich jetzt aber persönlich, bin ich doch auch so einer...

von oh my god (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.