Forum: Mikrocontroller und Digitale Elektronik Visualisierung AVR zu PC über RS232


von Mathais (Gast)


Lesenswert?

Hallo

Ich führe mit meinem AtMega einige messungen durch und würde gerne die 
messdaten über RS232 an meinem PC senden und am PC mit den Daten eine 
Visualisierung durchführen. Die Daten die ich an den PC gesendet habe 
möchte ich dann noch am PC archivieren.

kann mir jemand helfen ?

Danke

mfg Mathias

von Olaf (Gast)


Lesenswert?

> Die Daten die ich an den PC gesendet habe
> möchte ich dann noch am PC archivieren.

Sende deine Daten einfach als ASCII, mach in einer Shell
eine Pipe auf und kopiere sie gleich in einer Textdatei.

> kann mir jemand helfen ?

Gern geschehen.

Olaf

von Max Neumann (Gast)


Lesenswert?

ich hatte das problem auch schon mal

von Mathais (Gast)


Lesenswert?

ASCII ??
Shell ??
Pipe ??

ich möchte immer ganze datenpakete schicken die wie folgt aussehen:
a = 3.5, b = 2.4 ......

und diese daten möche ich dann auswerten und ein diagramm im Excel damit 
erstellen oder eine richtige visu machen.

mfg

von ext4 (Gast)


Lesenswert?

sollte in vb sehr einfach machbar sein....

von Thomas P. (tpircher) Benutzerseite


Lesenswert?

Was spricht dagegen, die Daten CSV kodiert zu senden, also
1
3.5,2.4,...<NEWLINE>
2
4.4,3.2,...<NEWLINE>
3
...

Eine solche Datei kannst du dann direkt in Excel laden.

von Mathais (Gast)


Lesenswert?

aber wie verarbeite die Daten von meinem µC am PC ?
Wie kann ich das im Excel Laden ?

mfg Mathias

von Lukas B. (lukas-1992) Benutzerseite


Lesenswert?

Die Daten sendest du vom AVR (wie das mit dem AVR geh weiß ich nicht der 
wirt aber auch eine serielle Schnittstelle haben):
Dan bindest du in VB die Sierielle Schnittstelle ein (ist in der Toolbox 
(zumindest in C#)) dan kannst du die Daten einfach einlesen in einem 
Array Speichern.

Und wenns du unbedingt grafisch haben willscht nimmst eine Picturebox 
und von dere das Pain Event und zeichnest die Punkte die du im Array 
hast.

Wenns undbedingt Excel sein muss wird warscheinlich nicht ganz so 
einfach da man mit VBA nicht so einfach auf die Serielle Schnittstelle 
zugreifen kann.

du könntest die Punkte aus dem Array versuchen in CSV abzuspeichern und 
anschliesend in Excel laden und dan manuell ein Diagramm machen.

Es gibt viele Möglichkeiten.....


Grüße Lukas

von ext4 (Gast)


Lesenswert?

also am µC must du die daten halt wie im tutorial beschrieben versenden 
....

am pc must du sie entweder mit hyperterm empfangen und dann als text 
datei speichern und weiterverarbeiten oder ein vba plugin(direkt in 
exel) benutzen was die serielle schnitstelle abfagt...oder in vb ein 
entsprechendes objekt nutzen das die serielle auf macht die daten 
empfängt und und ein programm schreiben das die werte auswertet....

von ext4 (Gast)


Lesenswert?

messen steuern regeln mit m$ office oder so ähnlich gibts auch

von Mathais (Gast)


Lesenswert?

ok vb ist ein mal schlecht weil ich nur C kann.
könnte mir Vl jemand sagen wie ich die serielle schnittstelle im 
Programm einbinde ?
ich habe bis jetzt nur über das Hyper terminal mit dem AVR kommuniziert.

mfg Mathias

von ext4 (Gast)


Lesenswert?

gibts bestimmt libs für

von Mathais (Gast)


Lesenswert?

wie kann ich aus die daten direkt aus dem Hyper Terminal abspeichern ?

von Barny F. (barny)


Lesenswert?

Wie es schon gesagt wurde, sende die Daten im Ascci Format.

Um Die Taten in Excel zu bekommen, verwende am Bessten 
Tabulator-getrennten Text.
Dass ist eine normale Text-Datei, bei der mittels Tabulator in die 
nächste Spalte und mit Zeilenvorschub + Enter in die nächste Zeile 
gesprungen wird.


Wenn du nichts selbst Programmieren oder basteln willst, kannst du 
einfach den Hyperterminal verwenden welches serienmäßig bei jedem 
Windows dabei ist.
(Außer bei Vista, da fehlt's)
Da kannst du die empfangenen Daten einfach in eine Datei speichern.
Wenn du die Daten als Tabulator getrennten Text sendest, brauchst du die 
Datei nur IRGENDWAS.XLS nennen und schon kann Excel die Daten ohne 
Probleme verwenden.

von Thomas P. (tpircher) Benutzerseite


Lesenswert?

Mathais schrieb:
> wie kann ich aus die daten direkt aus dem Hyper Terminal abspeichern ?

Transfer --> Capture Text?

Naja, soo viele Optionen bietet Hyperterminal nunn gerade nicht an, dass 
man sich im Menu verlieren wuerde...

EDIT:
Es gibt auch andere (bessere) Terminal Emulationen Fuer Windows:
- TeraTerm
- Br@y Terminal
- putty

von Mathais (Gast)


Lesenswert?

wie kann ich die empfangenen Daten in eine Datei Speichern ?

von Mathais (Gast)


Lesenswert?

wenn ich jetzt werte gespeichert habe z.B. : a=1,b=2...
und es kommen neue werte z.B. a=3,b=1... was geschieht dann mit den 
alten wertden ?

von Thomas P. (tpircher) Benutzerseite


Lesenswert?

Jessesmarantjosef! Probier's halt aus...

von Michael S. (captain-stone)


Lesenswert?

Wenn Du alles schon fertig haben möchtest, dann kannst dafür Labview 
verwenden. Wenn Du es selber machen möchtest, kannst Gtk+ Libary 
verwenden. Quäl mich auch gerade durch GtkDatabox :-)

Michael

von Thilo M. (Gast)


Lesenswert?

Ich nehm' ProfiLab dazu, kostet 99€ und ist recht einfach zu bedienen.
http://www.abacom-online.de/html/profilab-expert.html

von Philipp E. (pcsquirrel)


Lesenswert?


von Michael S. (captain-stone)


Lesenswert?

Hi Thilo,

das sieht echt gut aus. Leider nur für Windows zu haben :-( So eine 
Library hätt ich gerne für C.

Beim reinen Zusammenklicken bin ich immer ein wenig skeptisch. Wie 
zerlegst du da den String, welchen du über die RS232 schickst?

Michael

von Mathais (Gast)


Lesenswert?

gibt es eine möglichkeit das der PC jeden tag eine neue XLS liste anlegt 
oder muss ich das jeden tag selbstständig machen ?

von Michael S. (captain-stone)


Lesenswert?

Mathais schrieb:
> gibt es eine möglichkeit das der PC jeden tag eine neue XLS liste anlegt
> oder muss ich das jeden tag selbstständig machen ?

Dein Shift-Tast scheint defekt zu sein.

Wenn Du ein Makro in Excel dazu schreibst, kannst du für solche Zwecke 
die "Date" Funktion nutzen.

Michael

von Mathais (Gast)


Lesenswert?

wie funktioniert das mit dem Makro ?

mfg Mathias

von Gast (Gast)


Lesenswert?

Versuchs mal mit der Hilfe die in Excel eingebaut ist.

von Thilo M. (Gast)


Lesenswert?

Michael Steinbauer schrieb:
> Hi Thilo,
>
> das sieht echt gut aus. Leider nur für Windows zu haben :-( So eine
> Library hätt ich gerne für C.
>
> Beim reinen Zusammenklicken bin ich immer ein wenig skeptisch. Wie
> zerlegst du da den String, welchen du über die RS232 schickst?
>
> Michael

Das funktioniert mit den enthaltenen Funktionen recht gut, teilweise 
braucht's etwas Pahantasie. ;)
Man kann dort auch leicht eigene DLLs einbinden,was das Ganze sehr 
flexibel macht. Es sind wohl noch einige Bugs drin, auch die Bedienung 
lässt etwas zu wünschen übrig (keine 'Rückgängig' Funktion z.B.), aber 
für den Preis finde ich es echt OK!

von Michael U. (amiga)


Lesenswert?

Hallo,

Mathais schrieb:
> gibt es eine möglichkeit das der PC jeden tag eine neue XLS liste anlegt
> oder muss ich das jeden tag selbstständig machen ?

Kannst Du auch ganz altmodisch machen...

echo > d:Datei_%date%.txt

in eine DOS-Batch geschrieben und diese jeden Tag um 00:01 vom 
Taskplaner aufrufen lassen.

Schon hast Du jeden Tag eine leere Datei mit Namen
Datei_26.97.2009.txt auf Laufwerk D liegen...

Gruß aus Berlin
Michael

von Mathias (Gast)


Lesenswert?

aber ich muss im Hyper Terminal festlegen in welche Datei er die Daten 
schreiben soll.
und die Daten werden erst geschrieben ernn ich die aufzeichnung beende.

kann man das auch automatisieren ?

mfg

von Barny F. (barny)


Lesenswert?

>kann man das auch automatisieren ?

Ja

Frage aber doch bitte einmal Google / Bing,... nach:

Ascii
Tabulator getrennter Text
Batch Datei


Man kann zwar auch mittels Excel-Makro Daten von der RS232 aufzeichnen.
Aber da muß man dann das Makro nach jedem Wechsel der Office-Version 
quasi neu schreiben.


Es gibt mehrere Möglichkeiten wie du automatisiert die Daten aufzeichnen 
kannst.

1.: Du schreibst dir eine Batch-Datei (*.bat)

2.: Du kaufst / lädst dir ein Programm herunter dass das kann.

3.: Du schreibst dir ein Programm mit C/C++ selbst.
Für RS232 gibt es unter C/C++ genügend Beispiele wie man dass macht.
Und von Microsoft gibt's sogar eine kostenlose Version von Visual Studio 
mit der man sich so ein Programm schreiben kann.

von harpalykos (Gast)


Lesenswert?

wie würde der Batch programmcode ungefähr aussehen ?

von Ingo (Gast)


Lesenswert?

Hallo!
Um die Auswertung zu erleichtern, kannst Du auch mal hier vorbeischauen:
Beitrag "Visualisierung von geloggten Daten"
(bis unten durchscrollen), ist mittlerweile (glaub ich) ganz brauchbar 
geworden.
mfG ingo

von Ingo W. (Gast)


Lesenswert?

harpalykos schrieb:
> wie würde der Batch programmcode ungefähr aussehen ?

Im folgenden Beispiel werden die an com7 ankommenden Daten in die Datei 
d:\test(datum_zeit).txt geschrieben, wobei Datum und Zeit für die 
jeweils aktuelle Zeit gelten, damit wird ein Überschreiben der Datei 
vermieden. Mit dem Schalter /B vermeidet man eine Pufferung, die Daten 
werden sofort in die Datei geschrieben. Die der Kopiervorgang läuft so 
lange, bis er "hart" abgebrochen wird (Im Taskplaner Start- und 
Endzeitpunkt). Wenn die Datei jeden Tag, für 24 Stunden gestartet wird, 
hast Du für jeden Tag eine Datei

REM Die Schnittstelle einstellen:
mode com7: BAUD=9600 PARITY=N DATA=8 STOP=1
REM ankommende Daten kopieren
copy com7 /B d:\test%date%_%time%.txt

von Ingo W. (Gast)


Lesenswert?

Korrektur: %time% kann in den Dateinamen leider nicht rein, da sind mit 
den deutschen Landeseinstellungen die Zehntelsekunden mit Komma 
angehängt und das ist für Dateinamen nicht zulässig:

d:\tools\batch>echo %time%
19:11:37,67

mfG ingo

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
Noch kein Account? Hier anmelden.