mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie sende ich eine double Variablen an mein VBA-Programm


Autor: Hölscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mikrocontroller Freunde

Ich möchte über die Serielle Schnittstelle eine double Variable z.B
13.432 an mein VBA-Programm am meinem PC senden und dort anzeigen
lassen.

Das senden von Ganzzahlen wie 15, 16 ,255 ist kein Problem

Mein Problem:  Warscheinlich liegt es an der Typumwandlung

Ich würde mich freuen wenn jemand eine Lösung für mich hat

Mit freundlichen Grüßen
Christian Hölscher


Mein Quellcode in C

void main(void)
{
    unsigned int x;
    double Variable_1 = 12.23;

    PCON = 0x80;
    TMOD = 0x22;
    TH1 = 250;
    TL1 = 250;
    TMOD = 0x22;
    TR1 = 1;
    SCON = 0x52;
    ET1 = 0;

    while(1)
    {
         SBUF = Variable_1;
         for(x=0;x<=1000;x++);
    }
}


Mein Quellcode in VBA:

Sub form_load()
  MSComm1.RThreshold = 8             '3 Variablen einlesen
  MSComm1.Settings = "9600,N,8,1"
  MSComm1.PortOpen = True
End Sub

Private Sub Serielle_auswerten_1()

  Dim Wert1 As double
  Dim Ergebnis As double

  sdata = MSComm1.Input ' Get Data (2 Bytes = 1 Wort)

  'Wert1 = Asc(Mid$(sdata, 1, 2))    Kommentar so lese ich char
   Me.txtwert1.Text = sdata          Hier müste der Fehler liegen!!!

End Sub

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht solltest Du erst die Zahl in Text wandeln (im µC) und in VB
dann entsprechend decodieren (in float wandeln) oder einfach nur
Anzeigen, wenn du sie nicht weiter verarbeiten willst.
zur Umwandlung von Zahlen in Text gibt es in der Libc diverse
Funktionen. Das würde die Übertragung etwas verlangsamen, da mehr als
nur die beiden Bytes übertragen werden. Nämlich für jede Ziffer ein
Byte.
Sonst solltest du dir mal anschauen, wie double im µC codiert sind
(Mantisse und so [wie der andere Teil der Zahl heisst weiß ich gerade
nicht]).

Gruß Rahul

Autor: Hölscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rahul
vielen Dank für die schnelle Hilfe.

Mit freundlichen Grüßen
Christian

Autor: Hölscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mikrocontroller Freunde

für weitere Ideen bin ich jeder Zeit offen

Mit freundlichen Grüßen
Christian

Autor: Hölscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mikrocontroller Freunde
ich habe jetzt eine Convertierung von String nach float gefunden
ich brauche aber float nach String.

Hat jemand eine Idee...

Mit freundlichen Grüßen
Christian


#include <stdlib.h>
float atof (void *string);   /* string to convert */


#include <stdlib.h>
#include <stdio.h>                      /* for printf */

void tst_atof (void)  {
  float f;
  char s [] = "1.23";

  f = atof (s);
  printf ("ATOF(%s) = %f\n", s, f);
}

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dtostrf vielleicht?
Guck mal in der Libc danach. Ich hoffe, Du kannst Englisch...
Gruß Rahul

Autor: Hölscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rahul
ich verwende den Compiler von Keil uvision2 gibt es da auch die Libc
oder wo finde ich die?

Christian

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, ich bin vom AVR-GCC ausgegangen, weil der hier sehr verbreitet ist.
Falls Du sie da nirgends findest, müsstest du dir die Funktion selber
bauen. Dafür brauchst du eigentlich nur wissen, wie der Datentyp
"flaot" aufgebaut ist. Schliesslich handelt es sich dabei auch nur um
Bits (4 Byte?).
Gruß Rahul

Autor: Hölscher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Rahul
vielen Dank für deine Hilfe aber ich glaube da muss ich mich erst noch
weiter einlesen. Das bekomme ich leider nicht so einfach hin.
(Erfahrung fehlt).

Oder kannst du mir noch ein wenig weiter helfen. Ich hoffe ich nerve
nicht.

Mit freundlichen Grüßen
Christian

Autor: Meier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christian
ich hoffe du hast alles hin bekommen hast

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat vieleicht jemand noch einen Guten Beitrag?

christian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.