-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Datenaustausch PC

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2009
    Beiträge
    13

    Datenaustausch PC

    Anzeige

    Hallo,
    ich habe im Zuge meiner Physikfacharbeit angefangen, mich in das
    Thema Assemblerprogrammierung einzuarbeiten und weiß jetzt schon
    nicht mehr weiter:
    Ich habe Konstanten von Messungen in 3 Registern und die würde ich gerne an
    den Pc senden.
    Da ich ein Entwicklungskit habe, habe ich auch schon ein Programm zum
    "übersetzen" der Daten (8 bit).
    Jetzt meine Frage:
    Wie programmier ich das?
    Ich habe nur ein Programm, das ein Eingangssignal auswertet und wieder
    an den Pc schickt, aber ich habe keine Ahnung, wie ich eine einfache Zahl an den Computer senden kann.
    Danke im Voraus!

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    In Assembler ist das etwas komplizierter. Du kannst es auf 2 mögliche Arten übertragen. 1: Du überträgst einfach den Wert als Byte. Das ist am einfachsten beim Microcontroller, aber du brauchst eine PC-Software, die das interpretieren kann. Ein einfaches Terminal-Programm kann nur Asciizeichen anzeigen, die Lesbar sind. Also z.B. die Zahlen von 0-9. Wenn du jetzt eine 0 sendest, erkennt aber das Terminal eine Ascii-0 also ein End-of-File, statt der Zahl 0. Du kannst also ein Programm nehmen, was das auch darstellen kann. Beispielsweise Hterm (freeware, klappt sehr gut und ist von einem Hobbyprogrammierer) oder Docklights (gibt eine Shareware mit begrenztem Umfang und Laufzeit).
    Wenn du ein einfaches Programm nutzt, dann musst du die Daten vorher in eine lesbare Zahl übersetzen. Das geht einfach indem du den Wert solange durch 10er Potenzen teilst, bis sich eine Dezimalzahl ergibt, die du stellenweise überträgst. ->255 /100 = 2 ->255-200= 55 -> 55/10 =5 ->55-50=5 ->5, also 2, 5, 5. Fertig. Eine Division in Assembler machst du am besten durch schleifenweises Subtrahieren von 10 oder 100.

    Als Übertragungsmedium eignet sich RS232 bzw. die serielle Schnittstelle. Das geht im Atmel einfach durch Kopieren des Registerinhalts in ein Special Function Register und das setzen eines Bits. Den Rest macht der Controller. Wenn der Rechner keine mehr besitzt, dann kann ein USB-seriell Adapter helfen (hab ich auch schon so gemacht). Du kannst auch noch einen USB-Chip nehmen, der direkt an den Controller kommt, zb von FTDI, oder einen Controller, der direkt USB hat. Ich habe vor kurzem mit Microchip PICs mit internem USB Modul gearbeitet, das hat sehr gut funktioniert. Wenn der Rechner noch einen Parallelport oder alten Druckeranschluss hat, kannst du auch das Byte auf einen Schlag übertragen, das geht schneller, verbraucht aber direkt 8 Pins für Daten+ vll welche für die Steuerung.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2009
    Beiträge
    13
    Mir ist es mittlerweile gelungen, das richtige Programm ausfindig zu machen.
    Mein Übertragungsmedium ist das RS232.
    Ich habe am controller einen seriellen Anschluss,
    somit sende ich eben bit für bit (abhängig von Baudrate, mit "Start" und "Stopp" usw.)
    Ich habs zwar noch nicht programmiert, aber das Prinzip ist mir klar und ich habe ein ähnliches Programm.

    Jetzt noch eine Frage:
    Mein Controller misst also zwei Werte.
    Ich habe da so ein einfaches Terminal-Programm, das die Daten ausließt.

    Diese Daten benötige ich nun in einem KOORDINATENSYSTEM.
    D.h. ich muss die Daten, die im Terminal programm sind irgendwie in ein Koordinatensystem (bzw.Matheprogramm) einspeißen.
    Ist das möglich?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Ich benutze für sowas gerne ne Umrechnung in Ascii, also aus 255 wird 2,5,5, und dann sende ich die Zahl, dann ein Semikolon (einfach in die Asciitabelle gucken) und die nächste Zahl, wieder ein Semikolon und dann ein CarriageReturn und LineFeed. Das sind Steuerzeichen, die immer dann erscheinen, wenn du die Entertaste drückst, um einen Zeilenumbruch zu erzeugen. Wenn du jetzt X Datensätze übertragen hast, kannst du die aus dem Terminalprogramm rauskopieren und in einer leere Textdatei schreiben. Die nennst du dann *.csv und kannst sie in Excel öffnen. CSV steht für Comma Separated Values und jedes gute Tabellencalculationsprogramm kann damit was Anfangen. Die importierst du dann in Excel und kannst dir damit eine Grafik erstellen lassen. Excel zeigt dann in der Spalte A alle X-Werte, in der Spalte B alle Y-Werte an.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2009
    Beiträge
    13
    achso, ich habe natürlich vergessen zu schreiben, dass ich die Daten in Echtzeit auswerten muss!!!

    Mein Ziel ist es, ein Objekt zu verfolgen und zwar auf dem PC.
    Mit Kopieren und "Enter" drücken komme ich nicht weiter,
    ich benötige sozusagen ein Programm, das die Daten in Echtzeit in ein Matheprogramm einspeißt.

    Ich habe die Daten schon auf einem Terminalprogramm,
    das mir den Binärcode übersetzt.
    Jede Sekunde kommen ca. 3 Messdaten, mit
    denen ich die Koordinaten ausrechnen muss (das kann ich aber auch im microcontroller machen).
    aber wie lese ich sie von da in ein Koordinatensystem/Matheprogramm
    und lasse mir gleichzeitig die Koordinaten anzeigen?
    Wie schwer ist es so etwas zu programmieren?
    Ich nehme an, ein Programm wie Visual Basic oder so ist in diesem Zusammenhang ratvoller?
    Danke für deine Antworten!!!

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Ein geeignetes "Matheprogramm" wäre z.B. Matlab. Das kann direkt serielle Daten einlesen und ist an vielen Hochschulen/ Unis verfügbar (wo schreibt man eine Facharbeit...?) Such mal im Forum nach Matlab, ich hatte da mal ein Beispiel mit Video + Quellcode geposted.
    Viele Grüße, William
    -> http://william.thielicke.org/

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Du kannst auch eine einfache Software mit Visual C++ oder Visual Basic schreiben, es gibt von Visual Studio eine Student Edition, die ist kostenlos hat aber fast den vollen Umfang. Es gibt da auch einfach zu nutzende, fertige Klassen für die Ansteuerung der seriellen Schnittstelle und für Graphiken gabs mal ne einfache Möglichkeit, die Klasse MSChart, aber ich glaub die wurd wegrationalisiert. Für Graphen Suche ich da auch noch eine schöne Möglichkeit. Matlablizensen sind halt meist teuer und eher an Unis und FHs gesehen, nicht an Schulen. Und ich kann kein Matlab, das ist ne eigene Programmiersprache.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    In einem anderen Thread wurde hierfür vor kurzem Logview vorgeschlagen:
    http://www.logview.info.
    Über "Openformat" kann man da auch selbstdefinierte Datensätze im Ascii Format mit loggen.
    Lohnt sich glaube ich da mal einen Blick drauf zu werfen.

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    22.09.2009
    Beiträge
    13
    Erst mal möchte ich mich für die vielen ernstgemeinten Antworten
    bedanken!
    Für die dies nicht wissen:

    Eine Facharbeit ist eine ca. 15 Seitige Arbeit mit Experiment (wenn man im Fach Physik macht), die so viel zählt wie ein Kurssemester, also schon ziemlich viel.
    Das ganze macht man am Gymnasium in der 13. Klasse.

    Ich habe mir jetzt mal Logview heruntergeladen, weil unsere Schule
    garantiert kein Matlab hat.
    Danke für den Tipp!
    Werds bald ausprobieren.
    Ich hoffe, dass es auch mit de Koordinatensystem klappt,
    weil sonst muss ich wohl in Visual Basic neueinsteigen...
    Aber was ich so an schreenshots gesehen hab, müssts gehen.

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    Das ist ja das schöne an Visual Studio, du brauchst nicht in Basic programmieren, wenn du zum Beispiel eh schon C++ kannst, weil alles genau gleich aussieht, die gleichen Bezeichner hat, nur die Sprache an sich ist anders. Also keine Angst

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •