- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Senden & Empfangen via VB Programm "Auswertung"

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2011
    Beiträge
    22

    Senden & Empfangen via VB Programm "Auswertung"

    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
    40
    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
    40
    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
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    (50Var's+Wert im 100ms Takt an den Mega 16 senden)
    Das wird aber haarig vom Timing her mit den vielen Textkonversionen und der Übertragung als String.

    Auch bitte beachten: Baudratenquarz. 16MHz sind zwar schön für die Ausführungsgeschwindigkeit, kann aber Übertragungsfehler geben.

    Rechne mal die minimale Baudrate durch die Du brauchst um das alles schnell genug über die UART zu bringen
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    40
    Beiträge
    647
    Er kann die Geschwindigkeiten:

    4800
    9600
    19200
    38400

    verwenden. Diese haben alle einen Fehler von 0,16% bei 16Mhz. Ich denke damit kann man Leben.

    Jetzt müsste man nurnoch wissen, wie lang eine Übertragung ist.
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Ja, das dacht ich auch schon mal ... "Ach was mit dem kleinen Fehler kann man leben ..."
    Hab da auch schon Lehrgeld bezahlt

    Bei der Länge, die er alle 100ms rüber schieben will plus der Umwandlung der Strings in Integer ... sportlich.
    Das puffernd im Ringpuffer würd ich bleiben lassen und direkt "inline" umwandeln, sprich immer wenn ein Abschnitt komplett ist direkt.
    Ginge recht einfach ... per uart-interrupt Zeichen einlesen.
    Wenn ist Trennzeichen Pointer zurücksetzen, dann die nachfolgenden Zeichen in Puffer, beim nächsten
    Trennzeichen den Puffer kopieren, Parametercounter erhöhen,
    die Kopie umrechnen lassen und Ergebnis in Array mit Stelle des Parameterzählers speichern.
    Am Ende der Zeichenfolge dann ein End-Zeichen um den Parameterzähler zurückzusetzen (CR-LF z.B.)

    Der Haken dabei ist halt, für nen Integer kanns dann mal locker 5 Zeichen werden um 2 Bytes zu übertragen.

    Bei sagen wir mal 20 Parametern die er übertragen möchte sind das dann 100 Zeichen plus 20 Trenner, also 120 Zeichen.
    8 Bit, plus Start, plus Stopbit sind dann 1200 Baud mal 10, weil ja alle 100ms sind das dann Minimum 12000 Baud/s, die er erreichen muss.

    oder andersrum 19200 Baud / 1200 = 16
    1/16 = 0,0625 -> 62,5ms bräuchte in dem Falle bei 19200 die Übertragung mindestens. 4800 und 9600 kannst Du ergo schonmal abhaken.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

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
  •  

LiFePO4 Speicher Test