PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten empfangen, speichern und auswerten mit Bascom



nowayz
20.01.2009, 23:09
Hallo zusammen,

Ich habe hier ein Projekt, bei dem ich zwei Variablen habe, die ich in zyklischen Zeitintervallen an den Rechner schicken und später auswerten möchte.
Variable A ist als Byte dimensioniert, enthält also Werte von 1 bis 255.
Variable B ist integer und enthält Werte von 0 bis 1000.

Ich habe in meinem Code $baud 9600 stehen. Der Printbefehl für die beiden Werte soll in der Serviceroutine des Timers untergebracht werden.

Wie gehe ich am besten vor?
Wie kann ich die empfangenen Werte Loggen?
Am schönsten wäre, wenn meine Datei am Rechner dann eine Tabelle der Form wäre:
A | B
1 | 10
1 | 15
3 | 19
usw...

So könnte ich aus den Daten dann einfach eine Kürve in Excel zeichnen lassen. Oder ist es möglich direkt eine Kurve zu erzeugen? Dann halt jeweils einen Kurve pro Variable.

Für Tips und Ideen bin ich sehr dankbar!
lg

the_Ghost666
21.01.2009, 01:10
Zum Loggen könntest du ein Programm schreiben, was sich darüm kümmert, z.B. mit Visual Basic, oder ein Terminal-Programm benutzen, zum Beispiel HTerm.
Tabellenform erstellst du, indem du im CSV-Format Daten überträgst. Das Schema ist:
WertA als Ascii-String senden,Semikolon senden, WertB als Asciistring senden, Carriage-Return senden, Linefeed senden.
Carriage Return und Linefeed sind Steuerzeichen, i n C kenn ich es als '\n', musste es aber auch mal als 2 Asciizeichen senden. Schau mal in ner Ascii-Tabelle oder Wiki unter Ascii.
Dann kannst du es zb in Excel öffnen, festlegen, dass das Trennzeichen ein Semikolon ist, und fertig. Schon hast du deine Tabelle udn kannst daraus ne Grafik zeichnen lassen.
Du musst nur aufpassen, dass die Terminalsoftware auch läuft, sonst gehen Daten verloren. Oder du sprichst vorher mit dem Rechner, ob er empfangsbereit ist.

nowayz
21.01.2009, 11:35
Danke für die Antwort. Kann ich auch mit dem Terminal von Bascom arbeiten?
Kennt vielleicht jemand die Befehle, die ich in Bascom benötige?

Danke!

Andree-HB
21.01.2009, 12:45
Danke für die Antwort. Kann ich auch mit dem Terminal von Bascom arbeiten?


einfach :
print variable1;";";variable2

nowayz
21.01.2009, 14:34
und wie kann ich ihm sagen, dass er beim nächsten print in einer neuen Zeile anfangen soll?

Kann ich die Kurve nicht in Echtzeit zeichnen lassen?

hardware.bas
28.01.2009, 09:08
Will keinen neuen Tread eröffnen, weil dieser thematisch stimmt. Auch ich
bin auf der Suche nach einer Möglichkeit, Daten im AVR zu loggen. Zur
Zeit habe ich das Problem mit einer C-Control gelöst, C-Control wird jedoch
in Zukunft für mich kein Thema mehr sein. Das Gerät mit der C-Control
wird jedoch nicht mehr umgebaut, so dass ich aus Speicherplatz- und
Handlinggründen einen Logger von ELV eingebaut habe, der die Daten auf
einen USB-Stick schreibt. Dieser Bausatz ist mit einem AVR bestückt.
In Zukunft setze ich selber konsequent auf AVRs, welche ich mit BASCOM
programmiere. Ich bin z.Zt. selber dabei, dieses Loggingproblem zu lösen,
vielleicht gibts dazu auch schon Erfahrungen. Sehr elegant gestaltet sich
das Logging auf USB-Stick, was ich gerne - natürlich ohne extra Bausatz -
zukünftig realisieren möchte. VG Micha

Panzer4000
28.01.2009, 12:22
Hallo
@nowaysz
wenn du hinter den letzten Wert der Variablen kein ; setzt macht das Hyperterninal einen Zeilenvorschub.

Nimm das Hyperterminal von Windows XP, gibt noch andere im Netz.
Wenn du Platzhalter zwischen die Werte programmiert schreibt dir das Hyperterminal eine Tabelle die du in Exel oder anderen verarbeiten kannst.

@hardware.bas

mit Hyperterminal kannst du die Werte auf den Stick sofort speichern
Auswertung siehe oben.

Hyperterminal liegt bei Windows XP im Zubehörordner.



mfG

hardware.bas
28.01.2009, 14:46
Panzer4000: Danke für die Antwort, jedoch ist das nicht das Problem, was
ich meine. Den Stick lese ich mit dem Editor aus. Und das Auslesen mit dem
HT hab ich bisher auch praktiziert, jedoch muss dann immer der Rechner
mit "aufn Acker". Es geht einfach um 2 Dinge:
1. Logging IM AVR, danach auslesen auf Stick
2. Logging VOM AVR direkt auf den Stick.
Und das Ganze in BASCOM - wie gesagt, ich arbeite dran.
Soll dann alles mit dem EINGESETZEN AVR funktionieren ohne z.B.
ELV-Bausätze. VG Micha

Vitis
28.01.2009, 15:17
öha ... usb master auf nem AVR ... heiße Geschichte,
hab jetzt noch nirgends gesehen das sich einer
das angetan hätte. Ist auf alle Fälle nix für mal grad
eben

Printusb testfile.csv, variable_a

was häufig gemacht wird ist SD-Karte fürs Datenlog.
Da gibts auch sehr gute AVR-DOS Geschichten, damit die
erzeugte Datei vom PC direkt gelesen werden kann.
Wird wohl denk ich keinen großen unterschied
machen im Handling wenn an Stelle von USB-Stick ne
SD-Karte gesteckt wird.

hardware.bas
28.01.2009, 16:26
Nööö, eigentlich kein Problem. Ursprünglich hatte ich ja auch das Loggen mit
Speicherkarte vor. Da der Auftragnehmer jedoch sehr viel mit USB-Fiffis
arbeitet und kein Kartenleser (der zugegebenermassen billig ist) vorhanden
war, bot sich der ELV-Bausatz (RS 232 von C-Control nach USB-Stick) einfach
an. Wie schon erwähnt ist in diesem Bausatz ein AVR verbaut, der den
USB-Stick anspricht, deshalb der Wunsch gleich die USB-Schreib-und
wenns geht Lesefunktion dem AVR zu übertragen. VG Micha

hardware.bas
29.01.2009, 16:59
Ich bins nochmal, um auf das ursprüngliche genaue Thema dieses Tread
zurückzukommen: Wäre das auch ok. wenn man im AVR Datenspeichern
kann, welche mit Hyperterminal und Co. auslesbar wären? Die kriegt
man auch gut über den Texteditor bzw. ins Excel. Die Tabulatoren bzw.
notwendigen Umbrüche und Leezeichen kann ja dann der AVR machen.
Daran wäre ich auch interessiert und werds mal versuchen zu
programmieren. VG Micha

Vitis
29.01.2009, 17:12
stichwort eeprom .... die meisten avr haben auch n eeprom
mit eingebaut, die kann man gut für derlei anwendungen
verwenden.

hardware.bas
04.02.2009, 09:23
Gibts zu diesem Thema schon neue Ideen? Quelltexte oder sowas?
Vg Micha