Hallo, wie der Betreff schon sagt, will ich die vom µC kommenden Daten mit Excel graphisch darstellen. Ist ja kein Problem, die Daten mit einem Terminal aufnehmen und ins Excel importieren. Fertig. Diesen Weg wollte ich aber nicht gehen, da ich die Kennlinie zur Laufzeit sehen wollte. Da habe ich mich an das Buch "Messen, Steuern und Regeln mit Word und Excel" von Burkhard Kainka erinnert. Habe mir das Buch mit CD besorgt und nix, d.h. die einfachsten Makros, die die serielle Schnittstelle ansprechen, funktionieren nicht. Es kommt keine Fehlermeldung, das Makro läuft durch, aber es werden keine Daten gesendet. Könnte das daran liegen, dass die RSAPI.dll, die dem Buch beiliegt, nur auf einem Rechner mit Windows NT läuft? Also, ich habe Windows XP und Excel 2003. andi
Ich finde "Messen, Steuern und Regeln mit Word und Excel" klingt wie "Essen mit dem Arsch". Tschuldigung. Wenn du uC programmieren kannst, düfte es doch auch kein Problem sein auf deinem Hostsystem entsprechendes zu tun. libgd http://www.libgd.org kann ich dir ans Herz legen wenn es um das graphische Darstellen geht.
andi wrote: > Hallo, > > wie der Betreff schon sagt, will ich die vom µC kommenden Daten mit > Excel graphisch darstellen. Ist ja kein Problem, die Daten mit einem > Terminal aufnehmen und ins Excel importieren. Fertig. > Diesen Weg wollte ich aber nicht gehen, da ich die Kennlinie zur > Laufzeit sehen wollte. Da habe ich mich an das Buch "Messen, Steuern und > Regeln mit Word und Excel" von Burkhard Kainka erinnert. Habe mir das > Buch mit CD besorgt und nix, d.h. die einfachsten Makros, die die > serielle Schnittstelle ansprechen, funktionieren nicht. Es kommt keine > Fehlermeldung, das Makro läuft durch, aber es werden keine Daten > gesendet. Könnte das daran liegen, dass die RSAPI.dll, die dem Buch > beiliegt, nur auf einem Rechner mit Windows NT läuft? Also, ich habe > Windows XP und Excel 2003. > > andi verstehe ich das richtig, dass du die Daten "online" in Excel anzeigen willst? - Warum? ich mache es auch mit excel - aber anders daten loggen - in den txt datei speichern - in excel importieren funktioniert genauso gut. Ist halt nicht "live". aber mit meinem Logger könnte ich die Daten auch grafisch ausgeben, wenn ich mir eine entsprechende Darstellungsfunktion schreibe. Die Frage ist nur, warum live? Willst du ein Oszi bauen?
übrigens kann ich dir Qt ans Herz legen. Ist eine Open-Source Bibliotek für C++. Bietet eine Designer. Habe mir eine offene Klasse für rs232 besorgt. Bestimmt gibt es auch eine Klasse zur Darstellung von Messwerten, welches auf einen Canvas zeichnet. alle mal besser als Excel ;-) glaub mir, das willst du dir nicht antun.
Also, mal kurz zu meiner Applikation. Ich habe mir ein µC-Ladegerät gebaut. Damit lade ich einen 3.6V-NiMh-Akku von einem Handschrauber. Der Akku ist sehr lange unbenutzt rumgelegen. Die Ladekennlinie entspricht fast der "normalen" Ladekennlinie, aber nur fast. Deswegen will ich die Ladekennlinie bereits zur Laufzeit angezeigt bekommen, um zur Not eingreifen zu können. >Ich finde "Messen, Steuern und Regeln mit Word und Excel" klingt wie >"Essen mit dem Arsch". Also, dieses Gefühl habe ich auch langsam. Ich wollte es halt mit Excel ausprobieren, weil ich mir damit ein schnelleres Ergebnis erhofft habe. Ich habs schon mal mit Qt und Delphi probiert. Das Problem ist, wenn man da länger nix macht, ist der Wiedereinstieg mühsam.
@ Sebastian B. kannst du hier den Link zu deiner RS232-Klasse reinstellen?
In excel musst du aber auch macros schreiben, und diese verlangen VB... Ausser du machst es über den import, dann ist es aber nicht live..
das ist mir schon klar, nur der Aufwand wäre kleiner
Nen Graphisches LCD Display wäre doch schick, das alle paar Minuten einen Dot hinzuzeichnet...
Ich persönlich würde mir dafür schnell ein Python-Programm zusammenschreiben. Es gibt die Bibliothek "pyserial" mit der RS-232 ganz einfach geht. Auch für graphen gibt es bibliotheken. Grüsse, Michael
andere alternative: in txt speichern und per Gnuplot zeichnen... In einer der letzten C't war IHMO ein programm zum Anzeigen von Multimetern mit RS232. Eventuell hilft das?
Noch eine Alternative: C# mit .NET mit kostenlosem Visual Studio Express Edition. Wenn schon C Kenntnisse vorhanden sind, ist man da schnell drin. SerialPort Komponente ist ab Version 2005 bzw. Framework 2.0 dabei. Im Internet gibt es kostenlose Chart-Komponenten um die Grafik schön darzustellen (Gratisversion von TeeChart z.B.).
Ich hbe es schon zig mal in diesem forum geschriegen, es braucht keine Klassen, dll's oder sonstige Treiber um mit Excel-Makros über die UART zu kommunizieren! Einfache eine Datei mit dem Namen "COM1" öffen und schon kann man direkt auf die Com1 Schnittstelle schreiben und lesesn. Auch Die Online-Darstellung von irgend welchen Kurfen in Excel-Charts funktioniert prima... Ein bischen Code zum studieren: '-------------------------------------------------------------- Global interface$ Global baudrate$ '-------------------------------------------------------------- Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '-------------------------------------------------------------- Private Sub PollData_Click() If interface$ = "" Then init_com If (interface$ <> "") Then Open interface$ For Binary Access Read Write As #1 i = 0 Do resp$ = UCase(Query("RC-00:08")) Display resp$ Cells(2 + i, 27) = val(Cells(13, 4)) Cells(2 + i, 28) = val(Cells(14, 4)) Cells(2 + i, 29) = val(Cells(15, 4)) If i = 300 Then i = 0 Else i = i + 1 Cells(1, 1).Select 'Update chart Loop Close #1 End If End Sub '-------------------------------------------------------------- Function Query(cmnd$) clen = Len(cmnd$) + 3 'Cells(1, 6) = cmnd$ 'Debug info cmnd$ = cmnd$ + Chr(13) Put #1, , cmnd$ answer = "" Do char = Input(1, #1) answer = answer + char Loop While (char <> ">") alen = Len(answer) If (alen > clen) Then answer = Mid(answer, clen, alen - clen - 2) Else answer = "####" End If 'Cells(2, 6) = answer 'Debug Info Query = answer End Function '-------------------------------------------------------------- Sub init_com() interface$ = "" temp$ = UCase(Cells(2, 3)) If ((Right(temp$, 1)) = "1") Then interface$ = "COM1" If ((Right(temp$, 1)) = "2") Then interface$ = "COM2" If ((Right(temp$, 1)) = "3") Then interface$ = "COM3" If ((Right(temp$, 1)) = "4") Then interface$ = "COM4" If interface$ <> "" Then baudrate$ = "115200" ShellAndWait ("mode.com " + interface$ + " baud=" + br$ + " parity=n data=8 stop=1 to=on xon=off dtr=off rts=off") On Error GoTo fehler Open interface$ For Binary Access Read Write As #1 Query "BR-E1" 'set echo on Close #1 Cells(2, 3) = interface$ Cells(2, 4) = baudrate$ Else Cells(2, 3) = "Com?" Cells(2, 4) = "Error" Cells(2, 4).Select End If Exit Sub fehler: Cells(2, 3) = interface$ Cells(2, 4) = "Error" Cells(2, 4).Select interface$ = "" m_titel = "RS232 Interface:" m_stil = vbInformation m_text = "The COM-Interface could not be opened! " + Chr(13) + Chr(13) m_text = m_text + "Possibly the requested Interface is being " + Chr(13) m_text = m_text + "used by an other application. " + Chr(13) wasnun = MsgBox(m_text, m_stil, m_titel) Resume Next End Sub '-------------------------------------------------------------- Sub ShellAndWait(Befehl As String) Dim hProcess As Long Dim ProcessId As Long Dim exitCode As Long ProcessId = Shell(Befehl, vbHide) hProcess = OpenProcess(&H400, False, ProcessId) Do Call GetExitCodeProcess(hProcess, exitCode) DoEvents Loop While exitCode = &H103& Call CloseHandle(hProcess) End Sub
Womöglich läuft schon der ein oder andere Bankautomat mit Excel im Hintergrund? If ($AF134 > 0) goto GeldfachOeffnen; // Kontostand checken, ggf. Geld ausgeben lol.
Ich wollte auch die Ladespannung beobachten und habe dazu die Konsole auf 200 Zeichen Breite eingestellt, die per RS232 eintreffenden Werte skaliert und mir den interessanten Spannungsbereich geplottet. Wenn ich dann Akkus lade und sowieso am Rechner sitze, kann ich immer wieder mal einen Blick auf die Kurve werfen. Außerdem wird der Text gleichzeitig auch abgespeichert. Quick & Dirty, nur mal als Anregung. Grüße, Peter
@Peter Roth Das ist eine von den genialen Ideen, die man zu selten zu Gesicht bekommt! Quick'n'dirty hin oder her, das ist einfach gut... MfG und3rt4ker
Hallo Excelisten, hier noch der Hinweis auf - Beitrag "Mega8, ADC, UART. Excelblatt als Voltmeter" - http://www.bastelator.de/ (1. Projekt, basiert auf obigem Thread) Gruß, Bastelator
andi wrote: > @ Sebastian B. > > kannst du hier den Link zu deiner RS232-Klasse reinstellen? die RS232 Klasse findest du hier: http://qextserialport.sourceforge.net/ http://sourceforge.net/projects/gaiw/ vielleicht ist das auch was für dich: The Grace ASCII Import Wizard ("gaiw") is a cross-platform, Qt-based GUI allowing Grace (http://plasma-gate.weizmann.ac.il/Grace/) users to create 2D XY plots from ASCII data files very easily. das sieht auch sehr interessant für 2D Plots aus! http://sourceforge.net/projects/qwt/ kannst ja mal deine erfahrungen posten.. ein kleines rs232 protokoll hast du aber schon, oder? MFG
11833 wrote: > Womöglich läuft schon der ein oder andere Bankautomat mit Excel im > Hintergrund? > If ($AF134 > 0) goto GeldfachOeffnen; // Kontostand checken, ggf. Geld > ausgeben > > lol. Ohne Semikolon am Zeilenende und Kommentare werden mit ' eingeleitet. Ach und das "then" vergessen. :P Du willst nicht wirklich wissen, was bei Banken alles mit Office-Foo wie Excel oder Access gemacht wird. Ich habe einige Monate als freier Anwendungsentwickler für eine Bank gearbeitet. Highlight war zum Beispiel ein Tool in Excel (mit Unmengen VBA), welches über entsprechende Plugins aktuelle Spreads von Bloomberg importiert, daraus Kurven errechnet, das ganze mit historischen Daten (über SQL aus Atlas ausgelesen) vergleicht und das ganze schön aufbereitet visualisiert. Auf Grund der Datenbasis bewertet das Risikomanagement dieser Bank Divisenspreads und fällt massgeblich Entscheidungen für den internen Handel. Das Beste daran war, dass die finanzmathematische Bibliothek, die uns von einem namhaften Consultant im Finanzsektor zur Verfügung gestellt wurde, nicht mit negativen Spreads klarkam, wie sie z.b. beim Yes vorkommen (oder zumindest vorkamen). Diese wurde dann durch eine andere ersetzt. Anderes Beispiel: bankintern wird ein Excel-Sheet als Bedarfsumfrage für die Haushaltsplanung herumgeschickt (an jedes Department). Ein Tool von mir (in VB weil das mit dem Excel-Applicationobject so schön einfach ist) liest die Sheets aus (mehrere hundert in einem Ordner) und erstellt aus den aufbereiteten und nach Kostenstellen summierten Daten ein entsprechend formatiertes plaintext File, welches in SAP importiert wird. Darauf stützt sich die gesamte Haushaltsplanung dieser Bank. Und nein, ich rede hier nicht von einer kleinen Sparkassenfiliale, sondern über die Mutter einer Landesbank. Mal ganz davon abgesehen, dass jede Abteilung noch ihre eigenen Süppchen kocht und mal hier Excel, mal dort Access zur Datenablage nutzt (und das ganze dann noch in unterschiedlichen Versionen) will man nicht wirklich wissen, was IT-technisch da so alles hinter den Kulissen abläuft. Gruß Dominique Görsch
danke für eure Vorschläge
>ein kleines rs232 protokoll hast du aber schon, oder?
Im Moment schicke ich nur einen Zeitstempel und einen Meßwert. Was
Richtiges kommt erst später, wenn ich mich festgelegt habe, womit ich
die Daten darstelle.
@dominique boah, mir wird schlecht... am ende bezahlt es dann halt der kunde. die bank geht pleite, die nächste bank saugt sich den pleitegeier ein, der staat zahlt was zu, 100000 firmenschilder werden ausgetauscht, 2 mio visitenkarten neu gedruckt und - oho - die kontogebühren steigen. vielleicht auch demnächst bei den banken eine "servicegebühr"?
11833 wrote: > boah, mir wird schlecht... > am ende bezahlt es dann halt der kunde. die bank geht pleite, die > nächste bank saugt sich den pleitegeier ein, der staat zahlt was zu, > 100000 firmenschilder werden ausgetauscht, 2 mio visitenkarten neu > gedruckt und - oho - die kontogebühren steigen. > vielleicht auch demnächst bei den banken eine "servicegebühr"? Nunja, so schlimm das aus der Sicht eines IT'lers sein mag, aber es funktioniert. Ich fürchte die IT ist noch die kleinste Baustelle einer Bank, da gibt es sicher schlimmere Abteilungen... Die Bank von der ich rede ist im Übrigen auch keine Geschäftsbank sondern Förderbank (eines Landes) und immerhin fast überall AA oder AAA gerated[1]. Dennoch schluckt man ersteinmal, wenn man sieht, dass sich Entscheidungen für den Handel mit Devisen auf ein (wenn auch sehr umfangreiches und durchdachtes) Excelsheet stützen. Aber keine Sorge, dass Ding ist nich von irgend 'nem Mitarbeiter mal eben in der Kaffeepause gehackt worden, sondern darin stecken allein ein Monat Manpower von mir (für unterschiedliche Programmmodule) und ich will garnicht wissen wieviel Manpower für die Analyse und das Erstellen des Pflichtenheftes zuvor. Gruß Dominique Görsch [1] http://de.wikipedia.org/wiki/Rating
Sebastian B. wrote:
> 1 Monat Man-Power wie tröstlich.
Ich finde einen Monat reine Programmierung für ein Excelsheet nicht
wenig. Außerdem war ich auch nicht der einzige der an dem Ding
gearbeitet hat, ich schrieb ja allein durch mich ein Monat für
unterschiedliche Programmmodule.
Wie lange die Vorlaufzeit war entzieht sich meiner Kentniss, ich bekam
immer nur Pflichtenhefte oder Fachkonzepte aufs Auge gedrückt.
Gruß
Dominique Görsch
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.