PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehgeber - MBed - Borland - Wie kann ich die aktuelle Position anzeigen?



boorstii
31.05.2011, 08:00
Hallo erstmal zusammen!

Ich habe ein kleines Problem, muss auch dazu sagen, das ich gerade erst angefangen habe, mich mit diesen Dingen hier zu beschäftigen.

Ich möchte mit dem MBed Controller (NXP LPC1768 ) einen Drehgeber auswerten, um mir durch den Radius und die Umdrehungen den Verfahrweg anzeigen zu lassen. Soweit funktioniert das auch, wenn ich mir die Werte mit HTerm ansehe. Nun möchte ich mit Borland (C++Buider 6) mir eine Anwendung erstellen, wo mein aktueller Wert angezeigt wird. Für die Schnittstelle verwende ich ComPort3.5 von Winsoft.sk und habe auch schon das eine oder andere damit erfolgreich ausprobiert (Werte vom PC an den MC schicken).

Mein Problem besteht nun darin, das ich noch nie Werte vom MC zum PC ausgewertet habe und die zur Anzeige gebracht habe. Ich habe auch schon Onkel Google befragt, aber für "solche Banalen" Sachen leider nichts gefunden. Was ich gefunden habe war: Label,Memo oder Edit in Borland erstellen, Okay - hab ich versucht, aber es scheint, als ob da irgendwo ein Fehler ist, da mir entweder beim Kompilieren eine Fehlermeldung ausgegeben wird oder wenn es dann doch mal Kompiliert wird, dann wird kein Wert ausgegeben. Wenn ich in dem Fall dann auf das Label mit der Maus klicke, stürzt die Anwendung ab...

Mein Programm im MBed:
__________________________________________________ ____
#include "QEI.h"
#include "mbed.h"

Serial pc(USBTX, USBRX);
QEI wheel (p29, p30, NC, 2000);

int main() {

int umdrehung;
int wert;
float weg;
pc.baud(9600); //Baudrate (9600) festgelegt
pc.format(8, Serial::None,1); //Uebertragungsformat: 8 Datenbit,keine Paritaet, 1 Stoppbit

while(1){
wait(0.1);
wert = wheel.getPulses(); //Wert aus QEI.h
umdrehung = wert/4000; //4000 Inc = eine Umdrehung

pc.printf("aktuelle Umdrehungen: %d\r\n", umdrehung);
weg = wheel.getPulses()*0.095; //Umrechnung Wegstrecke
pc.printf("zurueckgelegter weg: %2.2f mm\r\n", weg);
}
}
__________________________________________________ _____

Und hier mein Borland-Programm:

//---------------------------------------------------------------------------
void __fastcall TForm1::Label2Click(TObject *Sender)
{
Label2->Caption = ComPort1->DeviceName;
}
//Zeigt den verwendetetn Com Port an und Funktioniert...
//---------------------------------------------------------------------------


void __fastcall TForm1::Label1Click(TObject *Sender)
{
//AnsiString dg1;
//float dg2;
//dg1 = ComPort1->ReadString();
//Label1->Caption = "%d\n";
}
//Versuch die Daten Umzuwandeln und im Label anzuzeigen... Erfolglos
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Change(TObject *Sender)
{
//AnsiString Wert;
//Wert = ComPort1->ReadString() ;
//double dwert;
//dwert = Wert.ToDouble();
//Edit1 = dwert;
}
//Versuch die Daten Umzuwandeln und im Edit anzuzeigen... Erfolglos
//---------------------------------------------------------------------------

void __fastcall TForm1::Memo1Change(TObject *Sender)
{
String Wert;
Wert = ComPort1->ReadString() ;

Memo1->Text = ComPort1->ReadString();
}
//Versuch die Daten im Memo anzuzeigen... Erfolglos
//---------------------------------------------------------------------------

_____________________________________________

Wie gesagt, habe nun schon viel herumexperimentiert, und wäre über einen Lösungansatz wirklich sehr dankbar!