mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik µC zu Excel


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Mein Lehrjahr hat das Projekt eine Wetterstation aufzubaun. Wir haben
zur Anzeige ein 16x4 LCD-Display verwendet und messen können wir
Luftdruck, Luftfeuchtigkeit, Helligkeit, DCF-Zeit und Temperatur. Nun
wollen wir aber die Daten auch in eine Exceltabelle übertrage,
auflisten und als Diagramm anzeigen. Das Problem ist; ich hab keine
Ahnung von VisualBasic.
Technische Daten:
µC= Mega16, DCF-Modul, Quarz: 6Mhz, Sht(Luftfeuchtigkeit / Temperatur),
LDR05, Mpx4115a(Luftdruck).
Zum programmieren benutze ich Bascom

Wär echt super wenn ihr mir/uns helfen könntet

Grüsse Andy

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Grunde genommen muss Excel für eine derartige Aufgabe auch gar nicht
programmiert werden - viel ist schon erreicht, wenn die Daten in einer
korrekt aufgebauten Datei vorliegen.
Dazu empfiehlt sich das sogenannte "csv"-Format (comma-separated
values), wobei Excel hier statt der Kommata gerne Semikola sehen
möchte.

Eine Zeile in so einer Datei entspricht einer Zeile in einer
Excel-Tabelle.

  10;20;30;bla
  11;21;31;fusel

Gelingt der Import, kann mit Excel-Methoden daraus ein Diagramm erzeugt
werden. Um das dann in ein VBA-Programm umzusetzen, ist der
Macrorecorder (in Excel eingebaut) ein praktischer Startpunkt.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übertrage die Daten per serieller Schnittstelle an den PC und schreibe
dort ein Logfile. Für das Format würde ich einfach kommaseparierte
Felder verwenden, also in der Art:

[..]
  printf("Luftdruck,Luftfeuchtigkeit,Helligkeit,DCF-Zeit,Temp\n");

  while(transmitdata)
  {
    printf("%03d,%03d,%04d,%02d:%02d:%02d,%03d\n", val1, ...);
  }
[..]

...auf der UART dann:

Luftdruck,Luftfeuchtigkeit,Helligkeit,DCF-Zeit,Temp
123,456,7890,00:00:00,27
124,455,7890,00:00:01,27
125,454,7890,00:00:02,27
126,453,7890,00:00:03,27
[..]

Das kann man sehr schön in Excel importieren ;)

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
argh - zu lahm :)

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@OldBug

ICh versteh nicht ganz wie du das mit kommaseparierte Felder meinst.
Schreibt man dann den code rein? (ist das basic?)
sorry ich kenn mich da echt garnicht aus...

Andy

Autor: Tassilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi @All,

es geht aber auch direkt in Excel! Mit VBA und dem MSCOMM32.OCX


Liebe Grüße

Tassilo

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie gesagt: {...Das Problem ist; ich hab keine
Ahnung von VisualBasic...}

ich möchte das ohne das machen. nur mit Bascom und Excel. oder ne datei
die Excelcompatibel ist

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also...

Das:

>Luftdruck,Luftfeuchtigkeit,Helligkeit,DCF-Zeit,Temp
>123,456,7890,00:00:00,27
>124,455,7890,00:00:01,27

Aus dem Logfile in Excel importiert sieht dann etwa so auf Deinem
Excel-Sheet aus:

      A     |         B        |     C      | ...
1 Luftdruck | Luftfeuchtigkeit | Helligkeit | ...
2       123 |              456 |       7890 | ...
3       124 |              455 |       7890 | ...

Wirds klarer?

Autor: buz11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sorgt man für einen Zeilenumbruch ?

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich mein das da;
[..]
  printf("Luftdruck,Luftfeuchtigkeit,Helligkeit,DCF-Zeit,Temp\n");

  while(transmitdata)
  {
    printf("%03d,%03d,%04d,%02d:%02d:%02d,%03d\n", val1, ...);
  }
[..]
Ich kann ja nicht Printf zu meim µc sagen, wenn ich das mach fragt der
mich was ich von ihm will ^^ der versteht das nicht. Das sieht aus wie
C...

124,455,7890,00:00:01,27
ist mit soweit klar. ich vermite das 00:00:01,27 sind Formatierungen
oder so

Autor: Tassilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Zeilenumbruch ?

CR+LF

Liebe Grüße
Tassilo

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, mist, sorry!

Natürlich ist das C, hatte Deine Anforderung für BASCOM völlig
überlesen. Naja, jedenfalls ist das ...,00:00:01,27 schon zwei Felder,
die durch ein Komma getrennt sind. 00:00:01 ist die DCF-Uhrzeit und 27
die Temperatur in °C. Alles fiktive Werte, um es Dir anschaulicher zu
machen. Die %03d im Formatstring des printf bedeuten, daß dort ein
Integerwert mit 3 Stellen dargestellt werden soll. Ist der Wert
kleiner, werden Nullen an den Anfang gestellt. Sowas gibt es für BASCOM
sicher auch, aber damit kenne ich mich nicht aus.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ich bereits erwähnte, empfiehlt es sich, als Feldtrennzeichen ein
Semikolon anstelle eines Kommas zu verwenden; Excel nämlich ist zu
doof dazu, das "comma-separated-value" (csv)-Format mit Kommata als
Trennzeichen zu lesen.

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ OldBug:
trotzdem danke für die hilfe!

@ Rufus T. Firefly:
Jo, es fehlt mir nur noch der Befehl in Bascom ume eine datei zu
erstellen. zumindest hoff ich dass das das einzige Problem ist lach

grüsse

Autor: OldBug (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Aha?

Das kann ich nicht bestätigen, siehe Dateianhang.

Vorgehensweise:
  - Leere Arbeitsmappe
  - Daten -> Externe Daten -> Textdatei importieren
  - (Log-) Datei auswählen
  - Komma anklicken, Tab abwählen
  - Bei der Uhrzeit evtl. vorerst mal Text als Format wählen

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anhang:

Nennt man das Logfile 'logfile.csv' bekommt man das gleiche Ergebnis!

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohne umbenennen und importieren und so weiter?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, nur Doppelklick auf 'logfile.csv'.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meine erfahrung ist, dass man auch den TAB in excel nehmen kann

so zB.
23.02.2005  12:02:23  150  136  87,2
23.02.2005  12:02:24  148  136  87,2
23.02.2005  12:02:25  148  134,6  87,2
23.02.2005  12:02:26  148  134,6  87,3
23.02.2005  12:02:27  145,7  134,6  87,3
23.02.2005  12:02:28  145,7  132,7  87,3
23.02.2005  12:02:29  145,7  132,7  87,3
23.02.2005  12:02:30  143,5  132,7  86,9
23.02.2005  12:02:31  143,5  130,5  86,9

klappt auch prima

aber in EXCEL kann man wie erwaehnt die COM schnitstelle direkt
ansprechen
ein kollege hat das mal gemacht und VB ist darin auch nciht schwer
ich hatte keine ahnung von VB und habe ein recht komplexes Makro
erstellt
einfach mal Probieren

Autor: Andy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
mein kollege hat ein programm gefunden - heisst linemonitor, falls das
jemand kennt. das zeichnet alles auf, was paralell gesendet wird und
exportiert es dann in excel... ich glaub da hat jemand das gleiche
problem gehabt und gelöst ;-)

Autor: stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab hier auch noch ein selbstgeschriebenes vb programm rumliegen ,
dass daten die von vom uc kommen direkt in excel schreibt

falls bedarf einfach mal kurz hier posten ( am besten mit email oder
icq  )

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noch besser ist als Trennzeichen das <TAB>-Symbol (chr(8) oder so?)
Dann kann man die Datei auch im Editor vernünftig lesen...

Auf der activevb.de-Seite gibt es einen Tipp zur Verwendung der RS232
unter Excel im VBA-Betrieb.

Übrigens kann man VBA sehr leicht dadurch lernen, dass man Macros
aufzeichnet, und sich dann den Quellcode anguckt.
So habe ich mal ein Hänel-Paternoster-Lager ausgelesen und eine
Bestellliste erzeugt...

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja stells mal bitte zum download hier rein ;-)

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay - ich kam immer noch nicht weiter heul

Autor: AxelR. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
XLS öffnen und mit ALT+F11 kann man sich den code ansehen.
Liest direkt von der Seriellen Schnittstelle in die Tabelle ein.
Gruß
AR.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Andy,

du schreibst" Mein Lehrjahr hat das Projekt eine Wetterstation
aufzubaun."
Ich interessiere mich auch für das Gebiet und will dich daher fragen,
in welchem Beruf du das lernst?
Danke für deine Antwort

Gruß

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AxelR. besten dank das kann man

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Jetzt muss ich auch mal was zu dem blöden *.csv sagen.
Es ist kein Problem eine csv-Datei zu erstellen wenn die Werte kein
Komma enthalten, das muss dann aber ein Punkt sein. Wenn man aber jetzt
versucht mit den Werten zu rechnen mault Excel rum.
Deshalb sende ich immer Semikolon getrennt in eine *.txt-Datei und das
Komma bleibt ein Komma. Der Import einer *.txt-Datei geht Dank der
Voreinstellungen auch sehr schnell. Nur Doppelkicken geht nicht.
So nun genug gemeckert, macht mal eure eigenen Erfahrungen.
Achso, was ich noch schreiben wollte, Das MScom32.ocx erzeugt machmal
aus unerklärlichen Gründen keinen Empfangsint.(OnCom)was bei fester
Zeichenlänge(so man sie benutzt) schnell zu blöden Fehlern führt.

MFG Uwe

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch mal als Feldtrenner einfach ein Leerzeichen.
Das mit dem Komma und Strichpunkt liegt wahrscheinlich an der deutschen
Version von Exel, da im deutschem die Dezimalstellen mit Komma getrennt
werden und im Englischem mit Punkt.
Ich würde den Import über *.csv benutzen, so das man die daten auch mit
anderen Programmen bearbeiten kann, und nicht auf Exel angewiesn ist.
Excel ist doch recht teuer und es gibt Alternativen.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... ich hab's ja von Anfang an gesagt: Excel funktioniert mit Semikola
als Feldtrenner in .csv-Dateien am besten.

Eine übrigens sehr empfehlenswerte Alternative zu Excel (und Word) ist
OpenOffice.org

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der <TAB> geht auch 1A...
(Nur noch mal so als Anmerkung)

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Thomas: Ich bin Azubi als IT-Systemelektronikers. Wieso fragst du?

@ all. Ich hab nun alles mal geteste. Tab, Komma und Semikolon. Es geht
alles (Ich benutze Excel 2003) könnte ja an dem liegen

Grüsse Andy

Autor: WernerA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@AxelR:
besten Dank für das Makro. Sieht echt gut aus.

Werner

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@WernerA

Danke, ist nicht von mir!

VlG
AxelR.

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.