Hallo Leute,
Ich stehe momentan vor einer für mich schwierigen Aufgabe.
Und zwar möchte ich einen Datenlogger mit einem Mikrocontroller basteln
zum aufzeichen von Temperaturen.
Dieser Datenloger soll wenn er fertig ist zwischen 10 und 25 Kanäle
haben aber genau weiß ich das noch nicht.
Die Programierung des Mikrocontollers ist für mich kein problem auch
nicht das Senden über die Serielle Schnittstelle, zumindest mit
Hyperterminal.
Nun möchte ich aber gerne die Daten in Echtzeit in Excel speichern und
einen Grafen erstellen.
Ich habe jetzt auch schon eine ganze weile nach passenden Projekten mit
Visual Basic gesucht aber nie genau das gefunden was ich brauche.
Da ich auch leider nicht viel ahnung habe von Visual Basic verstehe ich
auch die meisten projekte leider garnicht und Kann sie somit auch nicht
für meinen Zweck umschreiben.
Nun ist die frage ob jemand vieleicht schon so etwas gemacht hatt und
mir sein Projekt geben könnte möglichst so Kommentiert das man es gut
verstehen kann um es einfach zu erweitern.
Und zwar soll es wie folgt ausehen:
Ich sende mit dem Mikrocontroller die werte zb. 1020,1100,3010
wobei die Erste Zahl Kanal 1 ist und die Zeite Zahl Kanal 2 usw. die
ersten beiden Ziffern sind die Vorkommerstellen und die Letzen beiden
die Nachkommerstelle.
Diese Zahelen sollen dan in einer Excel Datei dargestellt werden in
Spalte 1 Kanal 1, in Spalte 2 Kanal 2 usw.
Kann mir da jemand neterweise mit weiterhelfen?
Die Datei du du angehangen hast gk sieht schon ganz net aus. Aber das
bringt mich nich nicht so ganz weiter weil ich da nicht durchblicke was
wofür ist.
Eigenschändlich musst Du die Demo nur noch auf Deine Anforderungen
anpassen. Zum Beispiel die Schnittstellenparameter und die Zeichen die
Du senden willst. Mit Alt-F11 kommst Du ins VB. Über den
Projekt-Explorer (Ctrl-R) kannst Du Dir dann die beteiligten Formulare
und Quellen ansehen und bearbeiten.
gk
Okay ich habe es jetzt soweit zumindest schon einmal das meine
gesendeten daten empafangen werden.
Ich weiß jetzt nur nicht wie ich diese auftrennen kann das bedeutet ich
sende jetzt zb. 1200, 1320, 1450, 1110 dan warte ich ca. 10 sek und dan
soll die nächste folge kommen zb. 1220, 1400, 1830, 1200 und angezeigt
werden soll das dann in unterschiedlichen spalten entwar so:
Kanal 1 Kanal 2 Kanal 3 Kanal 4
12,00 13,20 14,50 11,10
12,20 14,00 18,30 12,00
weiss jemand vieleicht wie ich das Empfangene Singnal auftrenne das er
mir daws so anzeigt?
Smoke schrieb:> Okay ich habe es jetzt soweit zumindest schon einmal das meine> gesendeten daten empafangen werden.> Ich weiß jetzt nur nicht wie ich diese auftrennen kann das bedeutet ich> sende jetzt zb. 1200, 1320, 1450, 1110 dan warte ich ca. 10 sek
Mach dir gleich mal als allererstes in die Übertragung #NACH# einer
'Serie' von Daten einen Zeilentrenner (\n) rein!.
Dann hast du logische Zeilen.
d.h. dein VB Programm liest erst mal eine komplette Zeile als String
ein. Hat es eine Zeile, dann zerlegt es die mittels Stringbearbeitung an
den ',' in Einzelteile. Da kann dann zb schon die erste Prüfung
stattfinden, denn in deinem Fall müssen das 4 Einzelteile sein, die sich
allesamt in Zahlen umwandeln lassen müssen. Und genau das machst du dann
auch: die 4 Teilstrings in Zahlen umwandeln, durch 100 dividieren und
ins Arbeitsblatt eintragen.
Aber du hast es in der Hand, den sendenden µC so umzuprogrammieren, dass
dir die Auswertung des gesendeten leicht von der Hand geht. Und eine
extrem gute Idee ist es praktisch immer, wenn man erst mal eine Struktur
in die Datenübertragung bringt, anhand der der Sender einzelne
'Datensätze' leicht identifizieren kann.
Das ist übrigens beim Dateihandling ganz genau gleich: Es liegt an der
Funktion, welche Daten auf eine Datei schreibt, ob es einfach möglich
ist, die Daten wieder von der Datei geordnet und richtig zu lesen.
> weiss jemand vieleicht wie ich das Empfangene Singnal auftrenne das er> mir daws so anzeigt?
Stringverarbeitung.
Was dir VB in der jetzigen Version anbietet, weiß ich nicht. Da musst du
halt mal ein wenig Tutorien bzw. Literatur bzw. das Helpsystem
studieren. Aber eine Funktion, die in einem String ein Zeichen sucht
(bei dir der ','), den gibt es in jeder Programmiersprache. Die
Komfort-Variante ist eine Splitfunktion, der man den Originalstring
gibt, dazu das Trennzeichen und welches einen 'Container' (Array, Liste,
was auch immer) zurückliefert, in der die auf diese Art aufgetrennten
Einzelstrings enthalten sind. Ob das jetzige VB so etwas hat oder nicht,
weiß ich nicht.
> Da ich auch leider nicht viel ahnung habe von Visual Basic> verstehe ich auch die meisten projekte leider garnicht
Die hatte ich auch nicht. Genau gesagt hatte ich von VB6 nicht die
geringste Ahnung.
Und trotzdem hab ich ein VB6 Projekt übernommen und weitergeführt.
Also: rann an die Buletten. Du kannst nur dabei lernen! Wenn du
programmieren kannst, dann kannst du die meisten Programmiersprachen aus
der selben Sprachfamilie auch lesen. VB, C, C#, C++, Pascal, Algol,
PL/I, Fortran, .... ja, klar. Die haben natürlich alle ihre
Besonderheiten. Aber die Grundprinzipien sind dann doch überall sehr
ähnlich. Anweisungen werden sequentiell in der angegebenen Reihenfolge
abgearbeitet. Es gibt Verzweigungen, Schleifen und eine Möglichkeit der
Modularisierung (sprich Funktionen). Gerade in VB sind ausgefallenere
Datenstruktur-Elemente eher selten zu finden. Und den Rest, die im
vorliegenden Beispiel benutzen Funktionen, die kann man mit dem
Hilfe-System schnell nachlesen. Gerade VB macht es einem da einfach.
Also: Lesen und Zusammenhänge rausholen kannst du Programme in vielen
Programmiersprachen. Schreiben ist dann ein wenig aufwändiger. Speziell
Programm schreiben, wobei man bei 0 beginnen muss.
Aber die Ausrede: Ich versteh nichts von VB, also sehe ich mir die Demos
erst gar nicht an ... die lass ich nicht gelten. Wenn BWL-er das können,
dann kannst du das auch.
Ich dachte das Problem sei schon längst gelöst. Die klassische Basic
Funktion zum Aufteilen von Strings war MID$. Beim Gurgeln findet man
dann noch die Funktion .SPLIT. Jetzt musst Du nur noch Deine Tabelle
erweitern und die aufgeteilten Strings in die Zellen verteilen. Wie das
geht sollte aus dem vorhandenen Demo ersichtlich sein.
gk
Ich habe das exel Beispiel herunter geladen. Und beim Starten hat er
gefordert, im desclimer => "Private Declare PtrSafe Function"
einzutragen.
Jetzt geht´s! ich habe noch Treiber für den USB I2C ELV umsetzter
installiert. Jetzt gibt es auch einen Com Port, und ich kann mir das
Programm genauer anschauen :)))
Danke Carsten
Hallo!
...... Es ging bis ich man mid dem Debugger durchgeschaut habe, um zu
erkennen wo man etwas versenden kann.
Dann ist Exel total abgeschmiert und läßt sich nicht mehr abfangen. Ich
hätte ja gedacht, daß irgendwann ein Timeout die Abfrag abbrechen würde
- tut es aber auch nicht.
Aber auf dem Weg durch die Initialisierung habe ich festgestellt, daß
das Programm so gut wie jede Einstellen die Ansteuerung der
Schnittstelle haben kann gesetzt wird.
Da ist es für mich natürlich unmöglich alle Funktionen zu erlernen um
den Fehler zu finden.
Was mich auch überrascht hat, ist, das offensichtlich ein Cash Speicher
auf der Festplatte erstellt wird. Den will ich natürlich auch nicht,
weil dann die Gefahr besteht, das die Festplatte nicht schnell genug
ist. Das ist wohl eher was wenn man Datenmengen laden will.
Ich will ja nur aktuelle Temperaturen auslesen. Wenn da mal eine Messung
außen vor bleibt, habe ich damit kein Problem, wohl aber wenn das
Programm deshalb abschmiert.
Noch etwas, was mich irritiert. Wenn ich das richtig sehe, wird über das
Bios der Treiber und dann der Port angesprochen. => Aber ohne
Interrupt?! Dann wäre es natürlich klar, das Exel abschmiert, wenn VBL
nicht denn Timout abfragt.
Sagt mal was <ihr mir empfiehlt.
Carsten
Carsten Sauermann schrieb:> Wenn ich das richtig sehe, wird über das> Bios der Treiber und dann der Port angesprochen.
Nein. Das BIOS spielt seit bald zwei Jahrzehnten keine Rolle mehr, das
tat es nur für DOS-Programme.
Hallo Rufus!
Das gehört ja nicht ganz zum Thema, aber ich bin ja selbst schuld, da
ich es angesprochen habe.
Also mein Rechner Bj 2013 hat noch ein BIOS.
Aber wie gesagt, das ist ein anderes Thema.
Carsten