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?
:
Verschoben durch User
Such mal nach mscomm control vba excel Treffer z.B. hier: http://www.excelforum.com/excel-programming-vba-macros/539481-tutorial-use-mscomm-with-a-serial-device.html
Hier ist eine kleine Demo in Excel http://www.mikrocontroller.net/attachment/7691/Rs232-20Demo.xls gk
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
Hallo! Prima Hilfe Fast :) Wie mache ich das bei 64bit? Danke Carsten
Carsten Sauermann schrieb: > Wie mache ich das bei 64bit? bei 64bit VB geht es genau so wie bei 32bit VB ;-)
Beitrag "Vorstellung: grafisches Terminal serielle Schnittstelle sTerm" leider scheint der download nicht zu funktionieren, vielleicht einfach mal ne e-mail schreiben.
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
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.