Forum: Mikrocontroller und Digitale Elektronik ausgabe von Microprozessor in .txt Format?


von Andreas Stock (Gast)


Lesenswert?

Wie kann ich einen Wert z.B.: Temperatur von einem Microprozessor in der
Sprache Basic in eine .txt Datei schreiben lassen?

mfg

von The Daz (Gast)


Lesenswert?

1. fopen
2. fputs
3. fclose

von Andreas Stock (Gast)


Lesenswert?

Vielleicht könntest du das etas genauer beschreiben?
...mit Beispiel

von Marko (Gast)


Lesenswert?

Datenausgabe über UART in den PC,
dort Terminalprogramm wie z.B. Hyperterminal vom Windoofs
und unter x.txt speichern

von Karl H. (kbuchegg)


Lesenswert?

fopen, fputs, fclose  sind die C-Funktionen.

Bei Basic heissen die anders und meist von Basic-Dialekt
zu Basic-Dialekt anders bzw. mit kleinen Unterschieden.

Aber das Prinzip ist immer das gleiche:

   Datei oeffnen
   Werte schreiben
   Datei schliessen.

Was sagt denn Dein Basic-Handbuch zu dem Thema?

von Andreas Stock (Gast)


Lesenswert?

Programmiersprache:
z.B.:
10 AN=0
20 X=ANALOG
30 Y=1/(X/50)*260
40 PRINT „Temperatur“
50 PRINT Y
55 OPEN „C:/test1.txt“ FOR OUTPUT AS 1
56 PRINT #1, Y
57 CLOSE 1

--> dies funktioniert aber noch nicht

von Andreas Stock (Gast)


Lesenswert?

ich besitze kein Basic Handuch

von Hanes (Gast)


Lesenswert?

Du kannst auf dem uC keine Datei ablegen, ausser du hast ein Dateisystem
für ein Speichermedium implementiert.

Was willst du genau machen?

von hans dieter (Gast)


Lesenswert?

was sagt der compiler/interpreter dazu (in welcher zeile hängt es
denn)?
Das / sollte dann schon ein \ sein

von Karl H. (kbuchegg)


Lesenswert?

Welches Basic ist es denn?

von Andreas Stock (Gast)


Lesenswert?

Eben... der "\" funktioniert nicht. Anstelle kommt immer ein "Ö"

von Karl H. (kbuchegg)


Lesenswert?

Ich denke dass im Moment die Verwirrung bei den Leuten
die dir helfen wollen groesser ist als bei dir.

Also: Erzaehl doch mal etwas mehr.
Wie sieht deine Schaltung aus? Welchen µC benutzt
du? Wo haengt der dran? Wie wird er programmiert?
Wie denkst du, soll dieser µC auf Deinem PC eine
Datei erzeugen koennen? Welches Basic nimmst du?

Irgendwie passt da was nicht zusammen. µC haben
normalerweise keine Festplatte oder ein sonstiges
Datei-orientiertes Speichermedium.

von Karl H. (kbuchegg)


Lesenswert?

Denk immer dran:
Wir wissen von Deinem Problem nur das was Du uns erzaehlst.
Alles was Du uns nicht erzaehlst muessen wir raten.

> Eben... der "\" funktioniert nicht. Anstelle kommt immer ein
"Ö"

Wie, was, eben?
Was ist denn nun Dein eigentliches Problem?

Sag jetzt nicht: Ich will eine Datei speichern.
Sag konkret: Ich will das und das machen und wenn ich
dieses und jenes tue, dann passiert das und das.

von Andreas Stock (Gast)


Lesenswert?

Nein...
Ich will den Wert den der µP berechnet in ein Textdokument ablegen.
Dieses Textdokument ist natürlich auf der Festplatte des PCs.
Der µP soll also nur die Werte über ein serielles Kabel zum Pc senden
und es dort in eine Textdatei speichern.

von Karl H. (kbuchegg)


Lesenswert?

OK.
Also Du schreibst jetzt den Programteil auf der PC Seite.
Sehe ich das richtig?
Welche Sprache benutzt du dafuer?
Kannst Du die Werte vom µC dort schon empfangen und
sagen wir mal ganz einfach anzeigen? (Nicht ueber
ein Terminalprogram sondern ein Program von Dir).

von Andreas Stock (Gast)


Lesenswert?

Wir geben das Programm über das Terminalprogramm mit Basic ein. Die
analogen inputs lesen wir wieder über das Terminal aus. Nun wollen wir
diese Werte in einer Text Datei speichern.

von Karl H. (kbuchegg)


Lesenswert?

Da sind 2 Computer beteilgt:

* Der eigentliche µC auf dem das Messprogram laueft.
* Der PC auf dem das Terminalprogram laueft ueber das
  Du den µC in Basic programmierst und zu dem der µC
  die Ergebnisse zuruecksendest.

Was Du brauchst ist eine Programmiersprache mit der
Du auf Deinem PC Programme erstellen kannst und die
auf dem PC laufen.

Das ganze ist so wie wenn Du Deine Freundin anrufst:
Deine Freundin sieht aufs Thermometer und gibt dir
die Temperatur durchs Telefon durch. Aber es ist dann
Dein Job (und nicht der der Freundin) diesen Zahlenwert
auf Papier niederzuschreiben.

Du musst Dich also schlau machen, welche Moeglichkeiten
Du hast Deinen PC zu programmieren. Die Programmierung
des µC ist dabei zunaechst erstmal Nebensache. Du brauchst
einen Ersatz fuer das Terminalprogram, das mit dem µC
Verbindung aufnimmt, die Werte entgegen nimmt und das
erhaltene in eine Datei abspeichert.

von Andreas Stock (Gast)


Lesenswert?

Mit dem Terminal funktioniert das also nicht.
Welches Programm könnte man benutzen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Äh, das hat doch Karl Heinz gerade ziemlich deutlich beschrieben:

mit einem von Dir selbst auf dem PC zu schreibenden Programm für
den PC.
Das muss mit der seriellen Schnittstelle die Dinge treiben, die Du
bislang "von Hand" über das Terminalprogramm getrieben hast und die
Resultate in einer Datei abspeichern.

Beginnt es langsam klarer zu werden?

von Andreas Stock (Gast)


Lesenswert?

es war ja die frage nach einen fertigen Basic programm welche schon von
jemanden programmiert worden ist.

von Karl H. (kbuchegg)


Lesenswert?

Sowas wirst Du nicht fertig kriegen.
Das Beste was Du kriegen kannst, ist ein Terminalprogram,
das ein Protokoll in eine Datei abspeichern kann.
(zb. Hyperterminal kann das, wenn ich mich nicht irre)

Wenn Dir das nicht reicht, dann musst Du schon selbst
ran und selbst was programmieren.

von Hannes L. (hannes)


Lesenswert?

Falls dir jemand so ein Programm schreiben wollte, dann braucht er auch
noch weitere Informationen:

- Betriebssystem des PC
- Gewünschte Oberfläche (von Kommandozeile über DOS-Box, sachlich
  einfach bis klicki-bunti-verspielt)
- Parameter der seriellen Übertragung
- vereinbarter Wertebereich und Codierung der eintreffenden Daten
  (oder kommen die schon als ASCII-Text an?)

Es gibt also noch viel mitzuteilen, ehe dir jemand sagen kann, ob er
dir helfen kann oder will.

...

von Axel Rühl (Gast)


Angehängte Dateien:

Lesenswert?

nabend,
>zitat
Wir geben das Programm über das Terminalprogramm mit Basic ein.
/>zitat

Jawoll, sowas hatte ich auch mal: 8052 AH-BASIC.
Da hatte der 52er Kern einen BAsic Interpreter onboard. Man musste sich
mit der Leertaste beim UC anmelden und konnte dann Zeile für Zeile das
Programm in den uC laden. Das wurde dann auch Zeile für Zeile im uC
interpretiert und irgentwann ausgeführt, schön nacheinander. Hat aber
astrein funktioniert, wenn auch schnarchlahm!

So zum Prog: (ob ich das noch hinbekomme?)
wieder Zitat von obens
<Zitat
Programmiersprache:
z.B.:
10 AN=0
20 X=ANALOG
30 Y=1/(X/50)*260
40 PRINT „Temperatur“
50 PRINT Y
55 OPEN „C:/test1.txt“ FOR OUTPUT AS 1
56 PRINT #1, Y
57 CLOSE 1

--> dies funktioniert aber noch nicht
/<Zitat

Ich nehme mal an, das ist der Basic "Script" für deinen uC?
Wird eine C-Control von C*x*d so programmiert?

Na egal OPEN „C:/test1.txt“ FOR OUTPUT AS 1 muss natürlich "FOR
INPUT" heissen.
Nur wirst du dem uC nicht beibringen können, auf deinem PC übers
serielle Kabel eine Datei zu öffnen. Das geht nicht.

PRINT Y sollte aber schonmal aus der seriellen Schnittstelle deines uC
daten liefern. Mit welcher Baudrate und mit welchen Parametern weiss
ich nicht, da die Initialisierung nicht mit bei stand.

Wenn ihr das Prog mit dem Ternimal in den uC reinhackt, müssten im
RX-Fenster auf alle Fälle - dort wo sonst auch die Boot-Meldung kommt -
wenigstens einmal folgendes zu sehen sein:

Temperatur
7.542E-4 (bei 8bit vollanschlag)

durch die Blume gesprochen, ist das eine ziemlich Herausforderung,
solch eine (für den uC) komplexe Rechnung dem Basic-Interpreter zu
überlassen.
Na aber egal, nach so 1-2Sekunden sollte dieser damit ja fertig sein
und dir in etwa oben genannten Wert einmalig im Terminalfenster
anzeigen.
Sonst könntet Ihr noch einfügen:

5 START:
.
.
.
55 GOTO START
Die eher bescheidene Ausführungsgeschwindigkeit lässt etwaige WAITS
oder DELAY überflüssig erscheinen.

Lass mal Zeile 30 erstmal weg, mach eine Endlosschleife aus deinem
"Script" und berichte uns mal, WAS GENAU ihr da für eine Kiste habt,
die euch Daten liefern soll bzw. ob das ja vielleicht alles schon geht,
nur das Abscpeichern eben noch nicht.

Schönen Abend
AxelR.

Y=1/(X/50)*260

schon krass, oder?
Tabelle empfiehlt sich hier, würde ich meinen.

von Andreas Stock (Gast)


Lesenswert?

Danke Axel für deine ausführliche Beschreibung!

Das ist natürlich nur ein Ausschnitt von meinem Programm das ich
geschrieben habe.
Leider versteh ich deine Frage nicht ganz:
Zitat: "Wird eine C-Control von C*x*d so programmiert?"
Das Programm läuft ja das einzige was mir noch fehl ist, dass ich eben
die Werte extra abspeichern kann, um sie dan später zu bearbeiten.

Das Problem ist das ich wahrscheinlich ein eigenes Programm, das den
Hyperterminal ersetzt, benötige um die einzelnen Werte
z.B.:Temperaturen in eine .txt Datei zu schreiben.

Ich habe nun erfahren das der Compiler den der µP verwendet eine eigene
Basic sprache aufweist, und diese wahrscheinlich nicht den Befehl des
ablegens in eine auswärtige Datei kennt...

von Sven (Gast)


Lesenswert?

So, noch mal ganz langsam:

1. Du verwendest eine C-Control Unit.
Auf dieser läuft irgendein Programm,
welches Werte erfasst....( dieses Programm hast Du mit
dem Compiler den C. mitliefert programmiert....) Gut.

2. Jetzt möchtest Du, das diese Werte auf dem PC gespeichert werden.

3. Jetzt musst Du diese Werte mit dem Basic compiler auf der
seriellen Schnittstelle ausgeben. Das machst Du alles mit dem
Programm was auf der C-Control läuft.(print-befehl soweit ich mich
erinnere...)

4. Jetzt brauchst Du ein Windows programm,
welches dir die werte in einer form wieder aufzeichnet.
(vorausgesetzt du verwendest windows)
Zum beispiel gibt es bray-terminal fertig.

5. es kann dir keiner ein fertiges programm geben oder anraten,
da du ein protokoll selber festlegen musst,
in welcher form die werte über die serielle schnittstelle
ausgegeben werden.
z.B. kommt sowas in betracht (ausgabe von 4 temperatur sensoren....)
print "12.5°C;23.5°C;45.3°C;84,3°C;97,7kPa;12:06:34;"

Diese Werte kann man dann in eine Datei auf einem Windows Rechner
schreiben !!!! Dies wird aber nicht in der C-Control programmiert.

6. Wenn Du selber ein programm schreiben willst,
brauchst du ein entwicklungswerkzeug, die die
serielle schnittstelle und dann!! die dateiausgabe unterstützen.

Beispiel: Dev-C++ (kostenlos..)
          Delphi
          Visual Basic
          Visual C++
          Java
          usw....

Dann ein paar Bücher kaufen und sich damit beschäftigen.

Gruß Sven

von Axel R. (Gast)


Lesenswert?

[..Leider versteh ich deine Frage nicht ganz:
Zitat: "Wird eine C-Control von C*x*d so programmiert?"..]

ist es denn nun ein C-Control, oder nicht?!

[..Das Programm läuft ja ..]

Wo/Wie werden im Augenblick deine Messwerte angezeigt?

von Andreas Stock (Gast)


Lesenswert?

Die Messwerte werden zur Zeit im Terminal und auf einem LCD Display
angezeigt.

von Axel R. (Gast)


Angehängte Dateien:

Lesenswert?

[...]?

von Marko (Gast)


Lesenswert?

Also Deine Aussagen sind in etwa so aufschlussreich wie
der bluescreen beim Windows.

allgemeinse Schutzverletzung in Modul jahfdjabfhjsdvbf

wenn du keine angaben über die von dir verwendete
hardware und software lieferst kann dir so
ziemlicih keiner helfen ... ist in etwa so
wie "mein pc läuft nicht, wer kann mir sagen
welchen Prozessor ich habe?"

von Sven (Gast)


Lesenswert?

@Andreas Stock:
es ist eine Frechheit mit einem Satz "Die Messwerte werden zur Zeit im
Terminal und auf einem LCD Display angezeigt."
Man macht sich die Mühe und schreibt ein paar Postings weiter oben
struktoriert etwas zusammen. Dann wäre es normal, auch Stellung dazu zu
nehmen. Wenn das also die Art ist um Hilfe zu bitten, bist Du meiner
Meinung nach auf dem Holzweg.

Gruß Sven

von thkais (Gast)


Lesenswert?

Ich drücke nur F4 und dann ist alles fertig.

von Axel R. (Gast)


Lesenswert?

ich fing schon an zu zeichnen in der Hoffnung, dass so meine Aussagen
besser verstanden werden.
macht mir aber langsam keinen Spaß mehr...

Wäre für mich überhaupt kein Problem, schnell in Delphi eine Form mit
der seriellen Komponente, einen FileSaveDialog und einem Memofeld
zusammenzuklicken.

Aber so kann ich mit deiner Aussage
[.. Die Messwerte werden zur Zeit im Terminal angezeigt. ..]
nicht viel anfangen.

Ich hatte erwartet, einen Auszug der Ausgaben zu bekommen (wenigstens
als Screenshot), die Angabe der Baudrate und der verwendeten
Übertragungsparameter. Darum hatte ich ja weiter oben schon - durch die
Blume - gebeten.

Ich weiss noch nicht, wie ich mich jetzt im weiteren verhalte. Ich lese
erstmal nur mit, da ja meine Ausführungen zum Thema offensichtlich ihr
Ziel verfehlen.

Vielleicht gelingt es ja jemand anderen, GENAU den Nerv zu treffen, der
dafür zuständig ist, eine SINNVOLLE Kommunikation stattfinden zu
lassen.

bis dahin

AxelR.

http://www.mikrocontroller.net/forum/read-1-191804.html#192695

von Hannes L. (hannes)


Lesenswert?

@Sven:

Ich glaube, du tust Andreas Stock Unrecht...

Frech wäre es, wenn er diese Antwort wissentlich gegeben hätte.

Aber ich habe den Eindruck, dass er selbst nicht weiß, welche Aufgaben
von welchem Teil der Hardware erledigt werden, dass verschiedene
Betriebssysteme unterschiedliches Herangehen bedingen und dass es ein
Protokoll zwischen PC und MC geben wird.

Ansonsten wäre er ja schon auf meine diesbezüglichen Fragen weiter oben
eingegangen.

Er hat halt ein "Zusatzgerät" für den PC, dass ihm irgendwelche
Messwerte anzeigt und möchte diese nun abspeichern, ohne sich näher mit
der Materie beschäftigen zu müssen.

Auf dieser Basis kann man ihm nicht helfen.

...

von Hannes L. (hannes)


Lesenswert?

@Axel:

So geht's mir auch...
Ich hätt' ihm auch ein kleines Programm mit den von dir genannten
Elementen zusammengenagelt, allerdings in VB6. Aber ohne Info geht das
nicht. Inzwischen wird meine Lust auch immer weniger...

Gruß nach Potsdam von der Elbe...

...

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.