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
Hi @All, es geht aber auch direkt in Excel! Mit VBA und dem MSCOMM32.OCX Liebe Grüße Tassilo
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...
XLS öffnen und mit ALT+F11 kann man sich den code ansehen. Liest direkt von der Seriellen Schnittstelle in die Tabelle ein. Gruß AR.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.