Datenübertragung von STM32F7 und Darstellung mit Dash

Gast #5750275
Lesenswert?
• ▲
▼
Guten Tag,

ich will eine Leistungsanalyse an einem Elektromotor mittels STM32F7 
vornehmen. Hierzu ist der Mikrocontroller auch schon programmiert. 
Dieser sendet die Messdaten, Strom und Spannung, per USB an meinen 
Rechner. Hier lese ich die Daten mit Python aus.
Da ich auf diesem Gebiet jedoch keine Erfahrung habe, bin ich auf ein 
paar Probleme gestoßen.
Ich lese den USB-Port in einer while-Schleife mit ser.read() aus.
Wie bekomme ich die Daten aus der while-Schleife um weitere Berechnungen 
vornehmen zu können?
Momentan hänge ich die Daten an ein Feld an. Bei while 1 wird das Feld 
aber unendlich lang und das Programm hängt dauerhaft in der 
while-Schleife.

Das nächste Problem ist, dass die übertragenen Daten immer in folgendem 
Format übertragen werden -> b'Daten' (Daten = Bsp. 1.54327)
So kann ich die Daten mit Dash nicht visualisieren...
Beim Versuch den String zu kürzen hatte ich keinen Erfolg. Ergebnis -> 
b'te'
anstatt -> Daten.

Für ein paar Tipps wäre ich sehr dankbar.
Vielen Dank im Voraus

Viele Grüße

Marco D.


Entschuldigung, dass der Code nicht in einer extra Datei ist. Hat nicht 
geklappt..
1
# -*- coding: utf-8 -*-
2
import serial
3
import dash
4
import dash_core_components as dcc
5
import dash_html_components as html
6
import plotly.graph_objs as go
7
from dash.dependencies import Input, Output
8

9
Strom = ['0']
10
Spannung = ['0']
11

12
#einlesen serieller port
13
def returnvalues(Strom, Spannung):
14
    ser = serial.Serial(port = 'COM11', baudrate = 9600, bytesize = serial.EIGHTBITS, parity = serial.PARITY_NONE, timeout = 1)
15
    try:
16
        ser.isOpen()
17
        print('USB ist offen')
18
    except:
19
            print('FEHLER!! Programmierfehler bei USB öffnen')
20
            exit()
21
    if(ser.isOpen()):
22
        try:
23
            i = 0
24
            while i < 5:
25
                a = ser.read(30)
26
                
27
                x = a.splitlines()[1]
28
                y = a.splitlines()[2]
29

30
# Unterscheidet Strom und Spannung
31
                if x[:1] == b'U':
32
                    Spannung.append(x[1:])
33
                    Strom.append(y[1:])
34

35
                elif x[:1] == b'S':
36
                    Spannung.append(y[1:])
37
                    Strom.append(x[1:])
38

39
                else:
40
                    print('FEHLER!! Spannung & Strom konnten nicht unterschieden werden')
41
                i = i + 1                
42
                                    
43
        except Exception:
44
            print('FEHLER!! Programmierfehler bei Datenzuweisung')
45
    else:
46
        print('FEHLER!! USB kann nicht öffnen')
47
# Ende einlesen
48

49
#Einlesen aufrufen
50
returnvalues(Strom, Spannung)
51

52
print('Strom=', Strom) 
53
print('Spannung=', Spannung)
54

55
#DASH
56
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
57

58
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
59

60
app.layout = html.Div(children=[
61
    
62
    html.H1(
63
        'Power Analyzer',
64
    ),
65

66
        dcc.Graph(id='example-graph', 
67
            figure={
68
                'data': [
69
                    {'x': [0.1, 0.2, 0.3], 'y': [1,2,3], 'type': 'line', 'name': 'Strommessung'},
70
                    {'x': [1, 2, 3], 'y': [4.34567, 5, 6], 'type': 'line', 'name': 'Spannungsmessung'},
71
                ],
72
                'layout': {
73
                     'title': 'Messungen'
74
                }
75
            }
76
        ),
77
        
78
])
79

80
if __name__ == '__main__':
81
    app.run_server(debug=True)
82
#ENDE DASH

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.