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
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.
Ü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 ;)
@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
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
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?
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
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.
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.
@ 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
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
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
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 ;-)
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 )
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...
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ß
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
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.
... 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
@ 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