mikrocontroller.net

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


Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 11833 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian B. (mircobolle)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Sebastian B. (mircobolle)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sebastian B.

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

Autor: Christian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist mir schon klar, nur der Aufwand wäre kleiner

Autor: 11833 (Gast)
Datum:

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

Autor: Michael E. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.).

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 11833 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Roth (gelb)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht 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

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk W. (bastelator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian B. (mircobolle)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dominique Görsch (dgoersch)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: 11833 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"?

Autor: Dominique Görsch (dgoersch)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian B. (mircobolle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1 Monat Man-Power wie tröstlich.

SCNR

Autor: Dominique Görsch (dgoersch)
Datum:

Bewertung
0 lesenswert
nicht 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

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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.