www.mikrocontroller.net

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


Autor: andi (Gast)
Datum:

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
Autor: 11833 (Gast)
Datum:

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.
Autor: Sebastian B. (mircobolle)
Datum:

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?
Autor: Sebastian B. (mircobolle)
Datum:

ü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.
Autor: andi (Gast)
Datum:

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.
Autor: andi (Gast)
Datum:

@ Sebastian B.

kannst du hier den Link zu deiner RS232-Klasse reinstellen?
Autor: Christian F. (Gast)
Datum:

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..
Autor: andi (Gast)
Datum:

das ist mir schon klar, nur der Aufwand wäre kleiner
Autor: 11833 (Gast)
Datum:

Nen Graphisches LCD Display wäre doch schick, das alle paar Minuten
einen Dot hinzuzeichnet...
Autor: Michael E. (Gast)
Datum:

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
Autor: micha (Gast)
Datum:

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?
Autor: Johnny (Gast)
Datum:

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.).
Autor: Peter (Gast)
Datum:

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
Autor: 11833 (Gast)
Datum:

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.
Autor: Peter Roth (gelb)
Datum:
Angehängte Dateien:

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
Autor: Daniel Bauer (und3rt4ker)
Datum:

@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
Autor: Dirk W. (bastelator) Benutzerseite
Datum:

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
Autor: Sebastian B. (mircobolle)
Datum:

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
Autor: Dominique Görsch (dgoersch)
Datum:

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
Autor: andi (Gast)
Datum:

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.
Autor: 11833 (Gast)
Datum:

@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"?
Autor: Dominique Görsch (dgoersch)
Datum:

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
Autor: Sebastian B. (mircobolle)
Datum:

1 Monat Man-Power wie tröstlich.

SCNR
Autor: Dominique Görsch (dgoersch)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
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.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net