Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] Separatore di stringa gcode

    Salve

    avrei bisogno di prendere una stringa(richiesta) di gcode(es. G0_X+_123_25_\) e scomporla in:

    char segno = '+';
    char coord = 'X';
    int step = 1234;
    int velocità = 25;


    ho provato a fare delle prove ma senza risultati

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ragioniamo sulle tue prove, altrimenti non risolvi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ah già, mi sono dimenticato di includerle

    dato che le informazioni fino a G0_X+_ sono sempre uguali ho converito la stringa in char utilizzando questa funzione(non propria del c++)
    codice:
    richiesta.toCharArray(richiesta1, 100);
    poi ho preso le parti che mi servivano

    codice:
    coord = richiesta1[3];
          
            segno = richiesta1[4];
    e poi con un ciclo for ho cercato di prendere il valore step

    codice:
    for(n=6, n1=0;richiesta[n] == '_';n++, n1++){stepp[n1] = richiesta1[n];}
    E ho cercato di convertire tutto

    codice:
    String stepps;
    stepps = (String)stepp;
    nStep = stepps.toInt();
    ma il valore nStep mi rimane sempre nullo

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Non postare pezzi di codice ma il programma completo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ok
    Il codice è c++ per arduino

    codice:
    #include <String.h>
    #include <avr/io.h>
    #include <avr/wdt.h>
    
    
    
    
    #define Reset_AVR() wdt_enable(WDTO_30MS); while(1) {}
    void(* Riavvia)(void) = 0;
    void steps(int nStep, char coord, char verso);
    
    
    
    int val = 0;
    String richiesta;
    
    char carattere;
    int baudrate = 9600;
    int EsciCicloG0 = 0;
    char richiesta1[100];
    char coord;
    char segno;
    int nStep;
    int n = 6;
    int n1 = 0;
    char stepp[20];
    
    String Direzione;
    
                    void RiceviDati(){  //inizio funzione per ricevere dati
                       val = Serial.read();
                        carattere = val;
    
                        if(val != 92){
                          richiesta = richiesta + carattere;
                          carattere = ' ';
                        }
                    }  //termine funzione
    
                    void AzzeraVariabiliSeriali(){  //inizio funzione di azzeramento variabili
                      richiesta = "";
                      val = 0;
                    }  //termine funzione
    
    
    
    
    void steps(int nStep, char coord, char verso){
    
    int cont = 0;
    int pin;
    int dirPin;
    
    
    
    if(coord == 'X'){
    
      pin = 12;
      dirPin = 15;
    
    }
    
    else if(coord == 'Y'){
    
      pin = 11;
      dirPin = 16;
    
    }
    
    else if(coord == 'Z'){
    
      pin = 10;
      dirPin = 17;
    
    }
    
    if(verso == '+'){
    
      digitalWrite(dirPin, LOW);
    
    }else{
    
      digitalWrite(dirPin, HIGH);
    
    }
    
    do{
    
      digitalWrite(pin, HIGH);
      delay(2);
      digitalWrite(pin, LOW);
      delay(2);
      cont++;
    
    
    }while(cont != nStep);
    
    cont = 0;
    
    }
    
    
    
    
    
    void setup() {  //void setup start
      pinMode(12, OUTPUT);
      pinMode(11, OUTPUT);
      pinMode(10, OUTPUT);
      pinMode(15, OUTPUT);
      pinMode(16, OUTPUT);
      pinMode(17, OUTPUT);
    
      Serial.begin(baudrate);
      Serial.println("C0");
    }  //termine void setup
    
    int i = 1;
    
    void loop() {
      if(Serial.available()){
        EsciCicloG0 = 0;
    
        RiceviDati();
        
        richiesta.toCharArray(richiesta1, 100);
            
            
    
    
    
          if(val == 92 || val == 0){   //AAAA
            //Serial.println(richiesta);
    
            if(richiesta == "C1"){
              Riavvia();
            
            }
    
            if(richiesta == "M1"){
              digitalWrite(13, HIGH);
              Serial.println("Led = ON");
              AzzeraVariabiliSeriali();
            }else if(richiesta == "M2"){
              digitalWrite(13, LOW);
              Serial.println("Led = OFF");
              AzzeraVariabiliSeriali();
    }
         if(richiesta1[0] == 'G' ){
      
            //Serial.println(i);i++;//1
    
            
            coord = richiesta1[3];
          
            segno = richiesta1[4];
           // Serial.println(segno);
            
            //Serial.println(i);i++;//2
    
           
           
           
        /*   
            do{
    
              stepp[n1] = richiesta1[n];
              n1++;
              n++;
    
              }while(richiesta[n] != '_');
              */
    
    for(n=6, n1=0;richiesta[n] == '_';n++, n1++){stepp[n1] = richiesta1[n];}
              //Serial.println(i);i++;//3
              
    
              n = 6;
              n1 = 0;
    
              String stepps;
              
              //Serial.println(i);i++;//4
              
              //nStep =(int)stepp;
              
              
                //stepps.toCharArray(stepp, 20);
                            stepps = (String)stepp;
                            
                            //Serial.println(stepps);
                           // Serial.println(stepp);
                            
                            
                            //Serial.println(i);i++;//5
              
                nStep = stepps.toInt();
    
                            //Serial.print(nStep);
    
                            //Serial.println(i);i++;//6
                            
    
                steps(nStep, coord, segno);
    
                            //Serial.println(i);i++;//7
    
                
    
                Serial.print("OK");
    
    
    
    
    }
    
                    else{
    
            Serial.println("Errore!");
            Serial.print(richiesta);
            AzzeraVariabiliSeriali();
    }
    
    AzzeraVariabiliSeriali();
          }
          
    
      }
      
     }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.