Forum: Mikrocontroller und Digitale Elektronik µC-Daten direkt mit Excel graphisch darstellen.


von andi (Gast)


Lesenswert?

Hallo,

wie der Betreff schon sagt, will ich die vom µC kommenden Daten mit 
Excel graphisch darstellen. Ist ja kein Problem, die Daten mit einem 
Terminal aufnehmen und ins Excel importieren. Fertig.
Diesen Weg wollte ich aber nicht gehen, da ich die Kennlinie zur 
Laufzeit sehen wollte. Da habe ich mich an das Buch "Messen, Steuern und 
Regeln mit Word und Excel" von Burkhard Kainka erinnert. Habe mir das 
Buch mit CD besorgt und nix, d.h. die einfachsten Makros, die die 
serielle Schnittstelle ansprechen, funktionieren nicht. Es kommt keine 
Fehlermeldung, das Makro läuft durch, aber es werden keine Daten 
gesendet. Könnte das daran liegen, dass die RSAPI.dll, die dem Buch 
beiliegt, nur auf einem Rechner mit Windows NT läuft? Also, ich habe 
Windows XP und Excel 2003.

andi

von 11833 (Gast)


Lesenswert?

Ich finde "Messen, Steuern und Regeln mit Word und Excel" klingt wie 
"Essen mit dem Arsch".
Tschuldigung.

Wenn du uC programmieren kannst, düfte es doch auch kein Problem sein 
auf deinem Hostsystem entsprechendes zu tun.
libgd http://www.libgd.org kann ich dir ans Herz legen wenn es um das 
graphische Darstellen geht.

von Sebastian B. (mircobolle)


Lesenswert?

andi wrote:
> Hallo,
>
> wie der Betreff schon sagt, will ich die vom µC kommenden Daten mit
> Excel graphisch darstellen. Ist ja kein Problem, die Daten mit einem
> Terminal aufnehmen und ins Excel importieren. Fertig.
> Diesen Weg wollte ich aber nicht gehen, da ich die Kennlinie zur
> Laufzeit sehen wollte. Da habe ich mich an das Buch "Messen, Steuern und
> Regeln mit Word und Excel" von Burkhard Kainka erinnert. Habe mir das
> Buch mit CD besorgt und nix, d.h. die einfachsten Makros, die die
> serielle Schnittstelle ansprechen, funktionieren nicht. Es kommt keine
> Fehlermeldung, das Makro läuft durch, aber es werden keine Daten
> gesendet. Könnte das daran liegen, dass die RSAPI.dll, die dem Buch
> beiliegt, nur auf einem Rechner mit Windows NT läuft? Also, ich habe
> Windows XP und Excel 2003.
>
> andi

verstehe ich das richtig, dass du die Daten "online" in Excel anzeigen 
willst?
- Warum?

ich mache es auch mit excel - aber anders
daten loggen - in den txt datei speichern - in excel importieren

funktioniert genauso gut. Ist halt nicht "live".
aber mit meinem Logger könnte ich die Daten auch grafisch ausgeben, wenn 
ich mir eine entsprechende Darstellungsfunktion schreibe.

Die Frage ist nur, warum live? Willst du ein Oszi bauen?

von Sebastian B. (mircobolle)


Lesenswert?

übrigens kann ich dir Qt ans Herz legen.
Ist eine Open-Source Bibliotek für C++.

Bietet eine Designer.
Habe mir eine offene Klasse für rs232 besorgt.
Bestimmt gibt es auch eine Klasse zur Darstellung von Messwerten, 
welches auf einen Canvas zeichnet.

alle mal besser als Excel ;-) glaub mir, das willst du dir nicht antun.

von andi (Gast)


Lesenswert?

Also, mal kurz zu meiner Applikation. Ich habe mir ein µC-Ladegerät 
gebaut. Damit lade ich einen 3.6V-NiMh-Akku von einem Handschrauber. Der 
Akku ist sehr lange unbenutzt rumgelegen. Die Ladekennlinie entspricht 
fast der "normalen" Ladekennlinie, aber nur fast. Deswegen will ich die 
Ladekennlinie bereits zur Laufzeit angezeigt bekommen, um zur Not 
eingreifen zu können.

>Ich finde "Messen, Steuern und Regeln mit Word und Excel" klingt wie
>"Essen mit dem Arsch".

Also, dieses Gefühl habe ich auch langsam. Ich wollte es halt mit Excel 
ausprobieren, weil ich mir damit ein schnelleres Ergebnis erhofft habe.
Ich habs schon mal mit Qt und Delphi probiert. Das Problem ist, wenn man 
da länger nix macht, ist der Wiedereinstieg mühsam.

von andi (Gast)


Lesenswert?

@ Sebastian B.

kannst du hier den Link zu deiner RS232-Klasse reinstellen?

von Christian F. (Gast)


Lesenswert?

In excel musst du aber auch macros schreiben, und diese verlangen VB...
Ausser du machst es über den import, dann ist es aber nicht live..

von andi (Gast)


Lesenswert?

das ist mir schon klar, nur der Aufwand wäre kleiner

von 11833 (Gast)


Lesenswert?

Nen Graphisches LCD Display wäre doch schick, das alle paar Minuten 
einen Dot hinzuzeichnet...

von Michael E. (Gast)


Lesenswert?

Ich persönlich würde mir dafür schnell ein Python-Programm 
zusammenschreiben. Es gibt die Bibliothek "pyserial" mit der RS-232 ganz 
einfach geht. Auch für graphen gibt es bibliotheken.

Grüsse,

Michael

von micha (Gast)


Lesenswert?

andere alternative:

in txt speichern und per Gnuplot zeichnen...
In einer der letzten C't war IHMO ein programm zum Anzeigen von 
Multimetern mit RS232. Eventuell hilft das?

von Johnny (Gast)


Lesenswert?

Noch eine Alternative:
C# mit .NET mit kostenlosem Visual Studio Express Edition. Wenn schon C 
Kenntnisse vorhanden sind, ist man da schnell drin. SerialPort 
Komponente ist ab Version 2005 bzw. Framework 2.0 dabei. Im Internet 
gibt es kostenlose Chart-Komponenten um die Grafik schön darzustellen 
(Gratisversion von TeeChart z.B.).

von Peter (Gast)


Lesenswert?

Ich hbe es schon zig mal in diesem forum geschriegen, es braucht keine 
Klassen, dll's oder sonstige Treiber um mit Excel-Makros über die UART 
zu kommunizieren!

Einfache eine Datei mit dem Namen "COM1" öffen und schon kann man direkt 
auf die Com1 Schnittstelle schreiben und lesesn. Auch Die 
Online-Darstellung von irgend welchen Kurfen in Excel-Charts 
funktioniert prima...

Ein bischen Code zum studieren:

'--------------------------------------------------------------
Global interface$
Global baudrate$
'--------------------------------------------------------------
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As 
Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As 
Long, lpExitCode As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As 
Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'--------------------------------------------------------------

Private Sub PollData_Click()
  If interface$ = "" Then init_com
  If (interface$ <> "") Then
    Open interface$ For Binary Access Read Write As #1
    i = 0
    Do
      resp$ = UCase(Query("RC-00:08"))
      Display resp$
      Cells(2 + i, 27) = val(Cells(13, 4))
      Cells(2 + i, 28) = val(Cells(14, 4))
      Cells(2 + i, 29) = val(Cells(15, 4))
      If i = 300 Then i = 0 Else i = i + 1
      Cells(1, 1).Select 'Update chart
    Loop
    Close #1
  End If
End Sub

'--------------------------------------------------------------

Function Query(cmnd$)
  clen = Len(cmnd$) + 3
  'Cells(1, 6) = cmnd$  'Debug info
  cmnd$ = cmnd$ + Chr(13)
  Put #1, , cmnd$
  answer = ""
  Do
    char = Input(1, #1)
    answer = answer + char
  Loop While (char <> ">")
  alen = Len(answer)
  If (alen > clen) Then
    answer = Mid(answer, clen, alen - clen - 2)
  Else
    answer = "####"
  End If
  'Cells(2, 6) = answer 'Debug Info
  Query = answer
End Function

'--------------------------------------------------------------

Sub init_com()
  interface$ = ""
  temp$ = UCase(Cells(2, 3))
  If ((Right(temp$, 1)) = "1") Then interface$ = "COM1"
  If ((Right(temp$, 1)) = "2") Then interface$ = "COM2"
  If ((Right(temp$, 1)) = "3") Then interface$ = "COM3"
  If ((Right(temp$, 1)) = "4") Then interface$ = "COM4"
  If interface$ <> "" Then
    baudrate$ = "115200"
    ShellAndWait ("mode.com " + interface$ + " baud=" + br$ + " parity=n 
data=8 stop=1 to=on xon=off dtr=off rts=off")
    On Error GoTo fehler
    Open interface$ For Binary Access Read Write As #1
    Query "BR-E1"   'set echo on
    Close #1
    Cells(2, 3) = interface$
    Cells(2, 4) = baudrate$
  Else
    Cells(2, 3) = "Com?"
    Cells(2, 4) = "Error"
    Cells(2, 4).Select
  End If
Exit Sub
fehler:
  Cells(2, 3) = interface$
  Cells(2, 4) = "Error"
  Cells(2, 4).Select
  interface$ = ""
  m_titel = "RS232 Interface:"
  m_stil = vbInformation
  m_text = "The COM-Interface could not be opened!   " + Chr(13) + 
Chr(13)
  m_text = m_text + "Possibly the requested Interface is being    " + 
Chr(13)
  m_text = m_text + "used by an other application.  " + Chr(13)
  wasnun = MsgBox(m_text, m_stil, m_titel)
  Resume Next
End Sub

'--------------------------------------------------------------

Sub ShellAndWait(Befehl As String)
  Dim hProcess As Long
  Dim ProcessId As Long
  Dim exitCode As Long
  ProcessId = Shell(Befehl, vbHide)
  hProcess = OpenProcess(&H400, False, ProcessId)
  Do
    Call GetExitCodeProcess(hProcess, exitCode)
    DoEvents
  Loop While exitCode = &H103&
  Call CloseHandle(hProcess)
End Sub

von 11833 (Gast)


Lesenswert?

Womöglich läuft schon der ein oder andere Bankautomat mit Excel im 
Hintergrund?
If ($AF134 > 0) goto GeldfachOeffnen; // Kontostand checken, ggf. Geld 
ausgeben

lol.

von Peter R. (gelb)


Angehängte Dateien:

Lesenswert?

Ich wollte auch die Ladespannung beobachten und habe dazu die Konsole 
auf 200 Zeichen Breite eingestellt, die per RS232 eintreffenden Werte 
skaliert und mir den interessanten Spannungsbereich geplottet.

Wenn ich dann Akkus lade und sowieso am Rechner sitze, kann ich immer 
wieder mal einen Blick auf die Kurve werfen. Außerdem wird der Text 
gleichzeitig auch abgespeichert.

Quick & Dirty, nur mal als Anregung.

Grüße, Peter

von Daniel B. (und3rt4ker)


Lesenswert?

@Peter Roth

Das ist eine von den genialen Ideen, die man zu selten zu Gesicht 
bekommt!
Quick'n'dirty hin oder her, das ist einfach gut...

MfG
und3rt4ker

von Dirk W. (bastelator) Benutzerseite


Lesenswert?

Hallo Excelisten,

hier noch der Hinweis auf
- Beitrag "Mega8, ADC, UART. Excelblatt als Voltmeter"
- http://www.bastelator.de/ (1. Projekt, basiert auf obigem Thread)

Gruß,
Bastelator

von Sebastian B. (mircobolle)


Lesenswert?

andi wrote:
> @ Sebastian B.
>
> kannst du hier den Link zu deiner RS232-Klasse reinstellen?

die RS232 Klasse findest du hier:
http://qextserialport.sourceforge.net/

http://sourceforge.net/projects/gaiw/
vielleicht ist das auch was für dich:

The Grace ASCII Import Wizard ("gaiw") is a cross-platform, Qt-based GUI 
allowing Grace (http://plasma-gate.weizmann.ac.il/Grace/) users to 
create 2D XY plots from ASCII data files very easily.

das sieht auch sehr interessant für 2D Plots aus!
http://sourceforge.net/projects/qwt/

kannst ja mal deine erfahrungen posten..

ein kleines rs232 protokoll hast du aber schon, oder?

MFG

von Dominique G. (dgoersch)


Lesenswert?

11833 wrote:
> Womöglich läuft schon der ein oder andere Bankautomat mit Excel im
> Hintergrund?
> If ($AF134 > 0) goto GeldfachOeffnen; // Kontostand checken, ggf. Geld
> ausgeben
>
> lol.

Ohne Semikolon am Zeilenende und Kommentare werden mit ' eingeleitet. 
Ach und das "then" vergessen. :P

Du willst nicht wirklich wissen, was bei Banken alles mit Office-Foo wie 
Excel oder Access gemacht wird. Ich habe einige Monate als freier 
Anwendungsentwickler für eine Bank gearbeitet.

Highlight war zum Beispiel ein Tool in Excel (mit Unmengen VBA), welches 
über entsprechende Plugins aktuelle Spreads von Bloomberg importiert, 
daraus Kurven errechnet, das ganze mit historischen Daten (über SQL aus 
Atlas ausgelesen) vergleicht und das ganze schön aufbereitet 
visualisiert. Auf Grund der Datenbasis bewertet das Risikomanagement 
dieser Bank Divisenspreads und fällt massgeblich Entscheidungen für den 
internen Handel. Das Beste daran war, dass die finanzmathematische 
Bibliothek, die uns von einem namhaften Consultant im Finanzsektor zur 
Verfügung gestellt wurde, nicht mit negativen Spreads klarkam, wie sie 
z.b. beim Yes vorkommen (oder zumindest vorkamen). Diese wurde dann 
durch eine andere ersetzt.

Anderes Beispiel: bankintern wird ein Excel-Sheet als Bedarfsumfrage für 
die Haushaltsplanung herumgeschickt (an jedes Department). Ein Tool von 
mir (in VB weil das mit dem Excel-Applicationobject so schön einfach 
ist) liest die Sheets aus (mehrere hundert in einem Ordner) und erstellt 
aus den aufbereiteten und nach Kostenstellen summierten Daten ein 
entsprechend formatiertes plaintext File, welches in SAP importiert 
wird. Darauf stützt sich die gesamte Haushaltsplanung dieser Bank. Und 
nein, ich rede hier nicht von einer kleinen Sparkassenfiliale, sondern 
über die Mutter einer Landesbank.

Mal ganz davon abgesehen, dass jede Abteilung noch ihre eigenen Süppchen 
kocht und mal hier Excel, mal dort Access zur Datenablage nutzt (und das 
ganze dann noch in unterschiedlichen Versionen) will man nicht wirklich 
wissen, was IT-technisch da so alles hinter den Kulissen abläuft.

Gruß
Dominique Görsch

von andi (Gast)


Lesenswert?

danke für eure Vorschläge

>ein kleines rs232 protokoll hast du aber schon, oder?

Im Moment schicke ich nur einen Zeitstempel und einen Meßwert. Was 
Richtiges kommt erst später, wenn ich mich festgelegt habe, womit ich 
die Daten darstelle.

von 11833 (Gast)


Lesenswert?

@dominique

boah, mir wird schlecht...
am ende bezahlt es dann halt der kunde. die bank geht pleite, die 
nächste bank saugt sich den pleitegeier ein, der staat zahlt was zu, 
100000 firmenschilder werden ausgetauscht, 2 mio visitenkarten neu 
gedruckt und - oho - die kontogebühren steigen.
vielleicht auch demnächst bei den banken eine "servicegebühr"?

von Dominique G. (dgoersch)


Lesenswert?

11833 wrote:
> boah, mir wird schlecht...
> am ende bezahlt es dann halt der kunde. die bank geht pleite, die
> nächste bank saugt sich den pleitegeier ein, der staat zahlt was zu,
> 100000 firmenschilder werden ausgetauscht, 2 mio visitenkarten neu
> gedruckt und - oho - die kontogebühren steigen.
> vielleicht auch demnächst bei den banken eine "servicegebühr"?

Nunja, so schlimm das aus der Sicht eines IT'lers sein mag, aber es 
funktioniert. Ich fürchte die IT ist noch die kleinste Baustelle einer 
Bank, da gibt es sicher schlimmere Abteilungen... Die Bank von der ich 
rede ist im Übrigen auch keine Geschäftsbank sondern Förderbank (eines 
Landes) und immerhin fast überall AA oder AAA gerated[1].

Dennoch schluckt man ersteinmal, wenn man sieht, dass sich 
Entscheidungen für den Handel mit Devisen auf ein (wenn auch sehr 
umfangreiches und durchdachtes) Excelsheet stützen. Aber keine Sorge, 
dass Ding ist nich von irgend 'nem Mitarbeiter mal eben in der 
Kaffeepause gehackt worden, sondern darin stecken allein ein Monat 
Manpower von mir (für unterschiedliche Programmmodule) und ich will 
garnicht wissen wieviel Manpower für die Analyse und das Erstellen des 
Pflichtenheftes zuvor.

Gruß
Dominique Görsch

[1] http://de.wikipedia.org/wiki/Rating

von Sebastian B. (mircobolle)


Lesenswert?

1 Monat Man-Power wie tröstlich.

SCNR

von Dominique G. (dgoersch)


Lesenswert?

Sebastian B. wrote:
> 1 Monat Man-Power wie tröstlich.

Ich finde einen Monat reine Programmierung für ein Excelsheet nicht 
wenig. Außerdem war ich auch nicht der einzige der an dem Ding 
gearbeitet hat, ich schrieb ja allein durch mich ein Monat für 
unterschiedliche Programmmodule.

Wie lange die Vorlaufzeit war entzieht sich meiner Kentniss, ich bekam 
immer nur Pflichtenhefte oder Fachkonzepte aufs Auge gedrückt.

Gruß
Dominique Görsch

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.