www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik µC zu Excel

Autor: Andy (Gast)
Datum: 03.06.2005 10:20

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: 03.06.2005 10:29

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: 03.06.2005 10:29

Ü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: 03.06.2005 10:30

argh - zu lahm :)
Autor: Andy (Gast)
Datum: 03.06.2005 10:49

@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: 03.06.2005 10:51

Hi @All,

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


Liebe Grüße

Tassilo
Autor: Andy (Gast)
Datum: 03.06.2005 10:55

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: 03.06.2005 10:56

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: 03.06.2005 10:59

Wie sorgt man für einen Zeilenumbruch ?
Autor: Andy (Gast)
Datum: 03.06.2005 11:02

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: 03.06.2005 11:03

>Zeilenumbruch ?

CR+LF

Liebe Grüße
Tassilo
Autor: OldBug (Gast)
Datum: 03.06.2005 11:07

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: 03.06.2005 11:08

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: 03.06.2005 11:15

@ 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: 03.06.2005 11:15
Dateianhang: csv-test.xls (13,5 KB, 69 Downloads)

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: 03.06.2005 11:16

Anhang:

Nennt man das Logfile 'logfile.csv' bekommt man das gleiche Ergebnis!
Autor: Andy (Gast)
Datum: 03.06.2005 11:18

ohne umbenennen und importieren und so weiter?
Autor: OldBug (Gast)
Datum: 03.06.2005 11:18

Genau, nur Doppelklick auf 'logfile.csv'.
Autor: Jens (Gast)
Datum: 03.06.2005 12:24

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: 03.06.2005 12:37
Dateianhang: InstallLineMonitor.exe (574,2 KB, 50 Downloads)

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: 03.06.2005 13:31

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: 03.06.2005 13:36

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: 03.06.2005 14:15

ja stells mal bitte zum download hier rein ;-)
Autor: Andy (Gast)
Datum: 06.06.2005 08:14

okay - ich kam immer noch nicht weiter heul
Autor: AxelR. (Gast)
Datum: 06.06.2005 14:34
Dateianhang: Rs232-20Demo.xls (165 KB, 220 Downloads)

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: 06.06.2005 16:11

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: 06.06.2005 16:18

AxelR. besten dank das kann man
Autor: Uwe (Gast)
Datum: 06.06.2005 18:40

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: 07.06.2005 21:22

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: 07.06.2005 21:45

... 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: 08.06.2005 11:21

Der <TAB> geht auch 1A...
(Nur noch mal so als Anmerkung)
Autor: Andy (Gast)
Datum: 09.06.2005 08:04

@ 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: 09.06.2005 11:04

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

Werner
Autor: AxelR. (Gast)
Datum: 09.06.2005 11:30

@WernerA

Danke, ist nicht von mir!

VlG
AxelR.

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel





Hinweis: der Originalbeitrag ist mehr als 6 Monate alt.

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net