Wie kann ich einen Wert z.B.: Temperatur von einem Microprozessor in der Sprache Basic in eine .txt Datei schreiben lassen? mfg
Vielleicht könntest du das etas genauer beschreiben? ...mit Beispiel
Datenausgabe über UART in den PC, dort Terminalprogramm wie z.B. Hyperterminal vom Windoofs und unter x.txt speichern
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?
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
Du kannst auf dem uC keine Datei ablegen, ausser du hast ein Dateisystem für ein Speichermedium implementiert. Was willst du genau machen?
was sagt der compiler/interpreter dazu (in welcher zeile hängt es denn)? Das / sollte dann schon ein \ sein
Eben... der "\" funktioniert nicht. Anstelle kommt immer ein "Ö"
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.
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.
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.
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).
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.
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.
Mit dem Terminal funktioniert das also nicht. Welches Programm könnte man benutzen?
Ä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?
es war ja die frage nach einen fertigen Basic programm welche schon von jemanden programmiert worden ist.
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.
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. ...
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.
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...
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
[..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?
Die Messwerte werden zur Zeit im Terminal und auf einem LCD Display angezeigt.
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?"
@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
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
@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. ...
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.