Daten an Borland schicken und dann auslesen?



  • Hallo,
    ich bin in allen Sachen ein Anfänger und bin dabei mich so langsam vorzutasten.
    Momentan bin ich dabei einen Spielzeugkran über einen Microcontroller und PC(mit Borland Bedienoberfläche) zu steuern.
    Ich habe zunächst den Microcontroller in C programmiert, mir mit dem Borland Builder eine Bedienoberfläche gebastelt und die Kommunikation über RS232 hergestellt. Bis jetzt kann ich meinen Kran nach links und rechts drehen lassen, die Laufkatze vor-und zurück fahren lassen, sowie das Seil rauf und runter fahren lassen.
    Für den nächsten Schritt wollte ich nun ganz gerne eine Positionsbestimmung für den Kranausleger haben und habe hierzu eine Schlitzscheibe und eine Lichtschranke an den Kran angebaut.
    Nun zu meinem Problem: Ich habe versucht einen einfachen Zähler mit 8 Positionen (die Schlitzscheibe hat 8 Schlitze)in C zu programmieren, weiß allerdings noch nicht, ob er funktioniert, weil ich ihn noch nicht testen kann(vielleicht kann da ja auch schon mal jemand drüberschauen). Dieser Zähler soll nun eine Variable mit der aktuellen Position an den PC übertragen und dort anzeigen.
    Dazu nun meine Frage: Wie schicke ich aus meinem C-Programm die Variable an den PC? Wie realisiere ich das unter dem Borland C++Builder, daß ich die Variable einbinden kann, d.h. auf meiner Bedienoberfläche die Position anzeigen kann? Wie kann ich in regelmäßigen Abständen die Variable in meinem Borland Programm aktualisieren(immer wenn sich die Position/Variable ändert?
    Ich hänge noch mein C-Programm mit an, vielleicht kann mir jemand dazu noch Tipps geben, ich wäre über konkrete Hilfe mit Quellcode-Beispielen dankbar, da ich wie gesagt ein Newbie bin und alleine schon vom Syntax(und meinem Unwissen) her noch Schwierigkeiten habe gewisse Sachen umzusetzen.

    Gruß
    Sven

    /****************************************************************************************************/
    /* Kran1_1.c        :       Steuerung eines Krans                                                   */
    /*                                                                                                  */
    /*                                                                                                  */
    /* Beschreibung     :       Der Kran wird mit Hilfe einer Bedienoberflaeche, die mit dem Borland    */
    /*                          C++Builder 5.0 erstellt wurde, gesteuert. Nach Betaetigung eines        */
    /*                          Bewegungsbuttons wird ein entsprechender Character an den               */
    /*                          Microcontroller gesendet, der den entsprechenden Motor ansteuert.       */
    /*                          Die Position des Auslegers wird ueber eine Lichtschranke ermittelt      */
    /*                          und ausgegeben.                                                         */
    /*                                                                                                  */
    /* Compiler         :       Keil 8051 C Compiler V5.20 (DLL 1.24)                                   */
    /****************************************************************************************************/
    
    #include<t89cc02.h>
    #include<stdio.h>
    #include<sio12mhz.h>
    #include<uart.h>
    
    main()
    {
    /*********************************** Vereinbarung der Variablen *************************************/
    
     int zaehler=0;                            /*Zaehlvariable fuer die Kranposition                    */
     char zeichen;                             /*Variable zur Ansteuerung des Krans                     */
    
    /************************************ allgemeine Kransteuerung***************************************/ 
     init();                                          
     while(1)
     {
      zeichen = getchar();
      switch(zeichen)
      {
       case 'a':P1_0=1;break;                  /*links*/
       case 'b':P1_0=0;break;
       case 'c':P1_1=1;break;                  /*rechts*/
       case 'd':P1_1=0;break;
       case 'e':P1_2=1;break;                  /*vorne*/
       case 'f':P1_2=0;break;
       case 'g':P1_3=1;break;                  /*hinten*/
       case 'h':P1_3=0;break;
       case 'i':P1_4=1;break;                  /*hoch*/
       case 'j':P1_4=0;break;
       case 'k':P1_5=1;break;                  /*runter*/
       case 'l':P1_5=0;break;
       case 'm':P1=0;                          /*Abbruch aller Bewegungen*/
    
      }
     }
    
    /******************** Postitionsbestimmung des Auslegers mit Lichtschranke **************************/
    
    /* konnte ich leider noch nicht ausprobieren, weiss auch noch nicht, ob das so wirklich funktioniert*/
    
     while(zaehler<=7);                        /*Signal Lichtschranke und Signal Button'links',         */
      {
       if(P1_6==1&P1_0==1)                     /*dann solange erhoehen bis 7 erreicht ist               */
         zaehler++;
      }                                        
    
     if(zaehler==7)                            /*wenn '7' erreicht ist wird der Ausgang auf '0' gesetzt,*/                                             
       P1_0=0;                                 /*damit der Kran nicht weiter nach links fahren kann     */
    
     while(zaehler>=0);                        /*Signal Lichtschranke und Signal Button'rechts',        */
      {                                   
       if(P1_6==1&P1_0==1)                     /*dann solange verringern bis '0' erreicht ist           */
         zaehler--;
      }
    
     if(zaehler==1)                            /*wenn '0' erreicht ist wird der Ausgang auf '0' gesetzt,*/
       P1_1=0;                                 /*damit der Kran nicht weiter nach rechts fahren kann    */
    
    /************************************ Ausgabe der Positionswerte ************************************/
    
    /* Hier moechte ich jetzt die Werte auslesen und immer wenn die Variable zaehler sich veraendert    */
    /* an den PC schicken.                                                                              */
     }
    


  • Hallo,
    kann mir niemand dazu Tipps geben?
    Ich wäre wirklich sehr dankbar dafür.

    Gruß
    Sven



  • Gemach gemach... Wir lassen ja sicher nicht alles einfach stehen und liegen wegen dir? (o;

    Du solltest grundsätzlich die Faustregel Pro Frage 1 Thread und pro Thread eine Frage beachten. Dann liesse sich nämlich das Eine hier - bzw. evtl besser im Rund um die Programmierung-Forum behandeln, und das Andere könnte man zu den Borland Builder-Spezialisten schieben.

    Anyway: Ich verstehe dein Problem nicht ganz? Du hast ja bereits Bits empfangen vom ComPort... was hindert dich daran welche zu senden? Die kann man eigentlich ganz normal senden, ausser man hat etwas Protokoll drum rum gebastelt. - Oft ist das aber Controller abhängig.

    Schlussendlich kannst du dann auf der PC-Seite einfach das übertragene auslesen und entsprechend auswerten.



  • Tut mir leid, wenn ich etwas zu aufdringlich wirke 😉

    Gesendet habe ich vom PC zum Microcontroller, das stimmt, das funktioniert auch.
    Allerdings sind meine Programmierkenntnisse zu gering, um den umgekehrten Weg zu beschreiben.
    Dazu kommt noch. dass ich nicht weiß, wie ich das in Borland umsetzen soll, das diese Variable angezeigt wird.

    Gruß
    Sven



  • Ach ja...und das ich hier vielleicht ein bißchen zu viel der Problematik gepostet habe, liegt nur daran, dass ich das Problem erst mal nicht auseinander reissen wollte, zum Verständnis eben. Ich wollte es nicht komplizierter machen, als es ist...nochmals: tut mir leid...



  • basehit schrieb:

    Gesendet habe ich vom PC zum Microcontroller, das stimmt, das funktioniert auch.

    ...und wie hast du das geschafft?

    basehit schrieb:

    Dazu kommt noch. dass ich nicht weiß, wie ich das in Borland umsetzen soll, das diese Variable angezeigt wird.

    Äh und wie hast du denn den Rest der Oberfläche geschafft?



  • Ich habe auf der Oberfläche die ComPort-Schnittstelle gesetzt und diese über einen ButtonClick aktiviert. Der Microcontroller hat über den Keil-Compiler die Kommunikation integriert.
    Dann habe ich auf der Oberfläche Buttons gesetzt, die bei Betätigung je ein Zeichen an den Microcontroller gesendet. Der Microcontroller hat dann, je nach Zeichen, einen Port und damit einen Motor angesteuert.
    Im C-Programm des Controllers habe ich die Zeichen mit getchar() bekommen.
    Die Oberfläche habe ich mit meinen wenigen Kenntnissen und der Hilfe zusammen gebastelt, da sind im Moment eh nur die Buttons für die ComPort-Aktivierung und die Steuerung des Krans (ganz simpel nur links,rechts,vor,zurück,hoch,runter,stop).


Anmelden zum Antworten