-
        

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

Thema: Senden & Empfangen via VB Programm "Auswertung"

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2011
    Beiträge
    22

    Senden & Empfangen via VB Programm "Auswertung"

    Anzeige

    Hallo Community, ich habe so ziehmlich alles mögliche gelesen im Netz zu UART etc.
    Ich muss leider gestehen das dass meine Kompentenz übersteigt!

    Es geht darum eine Schnittstelle zwischen meinem Flugsimulator und dem Mega16 zu schaffen. Das Problem ist das ich viele Dinge abfrage und zum Mega16 senden möchte. Fahrwerk, Triebwerk, Controllampen etc. Ich bräuchte aber erstmal einen Ansatz wie ich eine Variable mit Inhalt an Bascom sende und diese auswerte.

    VB Programm sendet:
    Fahrwerk = "1" (Fahrwerk ist ausgefahren)
    oder
    Fahrwerk = "0" (Fahrwerk ist eingefahren)

    Atmega16 empfängt:
    "Fahrwerk=1"

    Atmega16 schaltet
    Led1 = "1"

    Ich muss also eine Variable -> Name = "Fahrwerk" und dem Wert = "1" übertragen


    Nun müsste ich das Auswerten aber hier die Frage wie?
    Bascom muss ja erkennen das der Wert 1 nichtnur 1 ist sondern auch zum Fahrwerk gehört. Später möchte ich viele Daten (50Var's+Wert im 100ms Takt an den Mega 16 senden) damit übertragen. Da müssen die Flugsimulatorwerte ja zugeordnet werden können.


    Aktuell habe ich ein kleines VB Programm mit einem Eingabefeld wo ich etwas reinschreiben kann. das Sende ich dann an meinem Atmega16 der darauf promt antwortet(aus der Hilfe v. Bascom). Ich bekomme dann z.B. die Ausgabe "ASCII code 49 from serial"

    Das bedeutet das ich in das Eingabefeld eine "1" eingetippt habe,... mehr habe ich nicht hinbekommen ;/ Register, bites und bytes ich bin absolut überfordert. Auch die Hilfe @ input, Print und mehr überfordert mich gerade total. Ich benötige eine Art Beispiel da ich überhaupt keinen Bezugspunkt habe was ich wie machen soll. Die Tutorials die Empfohlen werden setzten C vorraus oder Grundkenntnisse. Bei Bascom komme ich klar Taster drücken und led einschalten,... aber einen Wert senden und auswerten ,...

    Ich nutze aktuell
    Atmega16 1Mhz "Standart takt Quarz mit 16Mhz noch nicht verbaut da ich ja noch teste."
    USB Konerter auf Serial
    Max232

    Erstmal um einen Einblick zu bekommen würde es mir helfen wie sende ich in VB Fahrwerk = 1 über Serial an Bascom und wie werte ich das in Basom aus um z.B.
    eine Led einzuschalten?

    EDIT:
    Mir fällt gerade PHP ein dort wird ein Array z.B. erstellt ... vielleicht geht das hier auch so?!

    $simulator = array(
    "Fahwerk" => "1",
    "Triebwerk" => "1",
    "Power" => "1",
    "Warning" => "0",
    "Flaps" => "0",
    "Fuel" => "123",
    "Fire" => "0");
    Ich wäre für Hilfe sehr sehr dankbar.
    Gruß Tom
    Geändert von Thomas Glas (06.04.2011 um 13:21 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    Hi, an deiner stelle wuerde ich Fahrwerk, Triebwerk etc garnicht als Klartext mit senden..
    Wenn du eh immer den selben Datensatz hast wuerde ich nur dessen Werte in einer fix definierten Form als ein Frame senden.
    (fixe laenge oder ";, etc"separiert)
    Im uC brauchst du einen Buffer in den du jedes ankommende Byte schreibst bis du z.b. ein von dir definiertes End-Byte enpfaengst..dann kannst du den buffer auslesen/werten.
    Beispiele sollten sich dafuer genug finden lassen.

    Gruss BastelWastel
    Nam et ipsa scientia potestas est..

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2011
    Beiträge
    22
    Hmm irgendwie habe ich da nur halb verstanden.

    Da heisst das es immer das selbe eigentlich ist könnte ich ne kombo senden.


    1; 2222; 322; 3330; 44441; 20; 555553; 455555; 5; 639

    In Bascom muss dann nurnoch das Feld erkannt und ausgeweretet werden ???

    z.B.
    Feld drei siehe oben weisst die Zahl/Wert 322 auf

    IF FELD3 = 1 THEN
    gelbe led an
    if Feld 3 = 322 THEN
    rote led an
    ELSE
    grüne led an
    ENDIF

    Habe ich das so richtig verstanden ?
    Gruß Tom

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    Hi,

    in welchem Bereich liegen denn deinen einzelnen Werte? Denn wenn sie über 256 groß sind, musst du ggf. 2 oder mehr Bytes zusammen setzen.

    Deine Felder sind die einzelnen Bytes. Das hast du oben schon richtig gemacht. Die Zahl 322 kannst du allerdings nicht in einem Byte darstellen.

    Gruß Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    Zitat Zitat von Thomas Glas Beitrag anzeigen
    Hmm irgendwie habe ich da nur halb verstanden.

    Da heisst das es immer das selbe eigentlich ist könnte ich ne kombo senden.


    1; 2222; 322; 3330; 44441; 20; 555553; 455555; 5; 639

    In Bascom muss dann nurnoch das Feld erkannt und ausgeweretet werden ???

    z.B.
    Feld drei siehe oben weisst die Zahl/Wert 322 auf

    IF FELD3 = 1 THEN
    gelbe led an
    if Feld 3 = 322 THEN
    rote led an
    ELSE
    grüne led an
    ENDIF

    Habe ich das so richtig verstanden ?
    Gruß Tom
    Jein..

    1; 2222; 322; 3330; 44441; 20; 555553; 455555; 5; 639
    waere z.B. wenn du als separierten ASCII string sendest..
    Dann musst du erst mal diesen string mit deinem Separator splitten..dann haettest du einen String-array mit x(1)="1", x(2)="2222" etc..
    Diese Strings kannst du dann je nach Bedarf wieder zu Byte, Integer oder nem floating point wandeln und damit rechnen..

    Wenn du bei der If Verzweigung den Vergleich FELD3 = 1 machst ist 1 schon eine Nummer..
    Du koenntest auch den String vergleichen z.B. FELD3 = "1"


    Du koenntest natuerlich auch direkt numerische Werte senden, dann musst du nicht mehr rechnen...ausser du hast Werte groesser 0-255,
    dann brauchst du wie Daniel schon geschrieben hat 2 oder mehr Bytes.


    Meiner Meinung nach haben beide Wege gewisse Vor/nachteile
    Gruss
    Nam et ipsa scientia potestas est..

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2011
    Beiträge
    22
    Ok dann muss ich die Daten von VB als ASCII String(Kette) durch Seperatoren getrennt senden.

    In Bascom angekommen die Daten aufsplitten und anschliessend in Intger wandeln ... nun kann ich diesen Wert auch in einer IF Anweisung nutzen oder damit rechnen.

    Habe ich das so richtig Verstanden


    Gruß Tom

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    Ja das ist die eine Möglichkeit.

    So kannst du es machen.
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2011
    Beiträge
    22
    Ja nur wo anfangen und wie ich bin total überfordert.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    Erstmal musst du dir überlegen, wie deine Übertragung aussehen soll.
    Also die Reihenfolge deiner 50 Variablen.

    Dann würde ich deinen Atmega auf 16Mhz laufen lassen. Dann hast du einen geringeren Übertragungsfehler bei höherer Geschwindigkeit.

    Kannst du mal den Teil deines VB Programms zeigen, in dem du die Serielle schnittstelle ansprichst?
    Damit ich sehe was du schon hast. Welche VB Version nutzt du?

    Deinen Bascom Code würde ich auch gerne dazu sehen.

    Gruß Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2011
    Beiträge
    22
    Per Vb habe ich nur ein kleines Programm mit Eingabefenster weches sich auf meinen Com4 verbindet und Daten senden und empfangen kann.
    Mehr ist das nicht :/ Kann aber heute Abend den Code hier eintragen. Ist aber nichts anderes wie Hterm oder ein anderes Terminal.

    Den Mega auf 16Mhz laufen lassen würde ich gern ,.. ich laß nur das man den mit falschen Settings kaputt machen kann und da ich mich da nicht ran traue als Anfänger,...

    Bascom Code habe ich nur das aus der Hilfe Datei :/ ich habe schon das eine oder andere geschrieben oder besser gesagt abgekupfert.
    Leds und Taster etc. das ist auch klar verständlich aber ein Umwandlung oder Berechnung ist schon ne nummer heisser.

    Wir nutzen VB2008 dafür haben wir Code snippets mit dem wir Werte aus dem Speicher auslesen können vom Flugsimulator und in der Software wiedergeben können.
    Aktuell scheitert es einfach daran die Daten in Bascom zu verarbeiten. Den String aus VB senden stellt eigentlich kein Problem dar.

    Ich habe eben mal gegoogelt und die Befehle MID, Instr zum Thema gefunden aber damit kann ich noch nichts anfangen.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. [C#] Daten von Programm über USB senden und empfangen
    Von PCF8574P im Forum Open Source Software Projekte
    Antworten: 5
    Letzter Beitrag: 02.12.2008, 23:15
  2. GP1A030 Drehgeber - Auswertung mit "C-Programm"
    Von Phoenix2k im Forum Sensoren / Sensorik
    Antworten: 3
    Letzter Beitrag: 06.06.2008, 16:26
  3. Auswertung eines "3D Kompass"
    Von MrNiemand im Forum Sensoren / Sensorik
    Antworten: 18
    Letzter Beitrag: 06.04.2007, 18:49
  4. UArt "verschluckt" beim Senden den Wert 0x00 ( AT9
    Von LotharM im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 02.12.2006, 12:24
  5. Im " Rahmen senden " bei RS485
    Von emulein im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 20
    Letzter Beitrag: 13.09.2005, 14:55

Berechtigungen

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