Lesen PC -> Microcontroller "kein gültiger Integerwert"
-
Ich habe ein problem was mir den kopf zerbricht.
Ich lese mit meiner Borland C++ Software über den Seriellen Port daten von meinem Microcontroller ein. Das geht mit Therminal "Tera Term " auch wunderbar.
Der ablauf ist das der PC an den Controller ne 1 schickt ... der arbeitet dann und nach nen druck auf einen Taster kommt ein Wert von 0 - 255 an den pc. Den will ich empfangen und damit weiter arbeiten.
Das läuft auch ohne probleme aber ich bekomme die oben genante meldung: kein gültiger Integerwert aber der wert vom Controller bekomme ich in die Software und kann damit weiter arbeiten. Nur die meldung stört natürlich
Es ist wenn man den Wert auslesen will -> OK klickt kommt die meldung aber auch der wert wie er es soll.
Ich hoffe jemand kann mir einen lösungstip geben
Hier der QuelltextSchönen Dank im vor - raus
Daniel//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "ComPort" #pragma link "Unit2" #pragma resource "*.dfm" int pceingabe,a_wert; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { pceingabe=StrToInt(Edit1->Text); ScrollBar1->Position=pceingabe; } //--------------------------------------------------------------------------- void __fastcall TForm1::V1Click(TObject *Sender) { ComPort1->Active=true ; Panel1->Color=clLime; Label1->Color=clLime; Label1->Caption="Verbindung hergestellt"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Verbindungtrennen1Click(TObject *Sender) { ComPort1->Active=false; Panel1->Color=clRed; Label1->Color=clRed; Label1->Caption="Verbindung getrennt"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Beenden1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { if(ComPort1->Active==true) { ComPort1->WriteString(1); if (Application->MessageBoxA("Bitte am Poti Wert einstellen und mit T4 Quittieren","Wert Einstellen !",0+64)==IDYES); { a_wert=0; Edit1->Text=ComPort1->ReadString(); a_wert=StrToInt(ComPort1->ReadString()); } } else { if(Application->MessageBoxA("Bitte Mischmaschiene verbinden und OK drücken","Keine Verbinndung zur Mischeinheit",1+48)==IDYES); { ComPort1->Active=true ; Panel1->Color=clLime; Label1->Color=clLime; Label1->Caption="Verbindung hergestellt"; if (Application->MessageBoxA("Bitte am Poti Wert einstellen und mit T4 Quittieren","Wert Einstellen !",0+64)==IDYES); { a_wert=0; Edit1->Text=ComPort1->ReadString(); a_wert=StrToInt(ComPort1->ReadString()); } } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if(!isdigit(Key)/*only allow Numbers*/&& Key!='\b'/*And Backslash*/) { Key=NULL; MessageBeep(0); ShowMessage("Es sind nur Zahlen möglich !"); } } //---------------------------------------------------------------------------
-
Hallo
Die Meldung wird von der Funktion StrToInt verursacht. Eine Lösung ist die Funktion StrToIntDef. Weitere Hintergrundinfos findest du über die Suchfunktion hier im Forum.
bis bald
akari
-
Riesen Dank, so ne kleinigkeit und ich such ewig rum. Dacht mir das es die Funktion ist aber hatte keinen lösungsansatz. Nu futzt es