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


von Hölscher (Gast)


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

von Rahul (Gast)


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

von Hölscher (Gast)


Lesenswert?

Hallo Rahul
vielen Dank für die schnelle Hilfe.

Mit freundlichen Grüßen
Christian

von Hölscher (Gast)


Lesenswert?

Hallo Mikrocontroller Freunde

für weitere Ideen bin ich jeder Zeit offen

Mit freundlichen Grüßen
Christian

von Hölscher (Gast)


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);
}

von Rahul (Gast)


Lesenswert?

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

von Hölscher (Gast)


Lesenswert?

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

Christian

von Rahul (Gast)


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

von Hölscher (Gast)


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

von Meier (Gast)


Lesenswert?

Hallo Christian
ich hoffe du hast alles hin bekommen hast

von Christian (Gast)


Lesenswert?

Hat vieleicht jemand noch einen Guten Beitrag?

christian

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
Noch kein Account? Hier anmelden.