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 Quelltext

    Schö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 😃


Anmelden zum Antworten