Forum: Mikrocontroller und Digitale Elektronik µC zu Excel


von Andy (Gast)


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

von Rufus T. Firefly (Gast)


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.

von OldBug (Gast)


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 ;)

von OldBug (Gast)


Lesenswert?

argh - zu lahm :)

von Andy (Gast)


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

von Tassilo (Gast)


Lesenswert?

Hi @All,

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


Liebe Grüße

Tassilo

von Andy (Gast)


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

von OldBug (Gast)


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?

von buz11 (Gast)


Lesenswert?

Wie sorgt man für einen Zeilenumbruch ?

von Andy (Gast)


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

von Tassilo (Gast)


Lesenswert?

>Zeilenumbruch ?

CR+LF

Liebe Grüße
Tassilo

von OldBug (Gast)


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.

von Rufus T. Firefly (Gast)


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.

von Andy (Gast)


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

von OldBug (Gast)


Angehängte Dateien:

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

von OldBug (Gast)


Lesenswert?

Anhang:

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

von Andy (Gast)


Lesenswert?

ohne umbenennen und importieren und so weiter?

von OldBug (Gast)


Lesenswert?

Genau, nur Doppelklick auf 'logfile.csv'.

von Jens (Gast)


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

von Andy (Gast)


Angehängte Dateien:

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 ;-)

von stefan (Gast)


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  )

von Rahul (Gast)


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...

von Andy (Gast)


Lesenswert?

ja stells mal bitte zum download hier rein ;-)

von Andy (Gast)


Lesenswert?

okay - ich kam immer noch nicht weiter heul

von AxelR. (Gast)


Angehängte Dateien:

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.

von Thomas (Gast)


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ß

von Jens (Gast)


Lesenswert?

AxelR. besten dank das kann man

von Uwe (Gast)


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

von Mike (Gast)


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.

von Rufus T. Firefly (Gast)


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

von Rahul (Gast)


Lesenswert?

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

von Andy (Gast)


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

von WernerA (Gast)


Lesenswert?

@AxelR:
besten Dank für das Makro. Sieht echt gut aus.

Werner

von AxelR. (Gast)


Lesenswert?

@WernerA

Danke, ist nicht von mir!

VlG
AxelR.

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.