Salve ragazzi, è da un paio di giorni che faccio testa e tastiera, non riesco a convertire una stringa in intero :S
Hi guys, it's been a couple of days that I make head and keyboard, I can not convert a string in integer :S
In pratica il problema è questo, un programma Java mi invia in seriale una stringa così formata "stringa-intero", leggo la stringa, cerco il carattere "-" e la divido in due sottostringhe, una contente la stringa ed una contenente il numero.
The problem is this, a Java program sends me by serial a string like "string-integer",I read the string, look for the "-" character and divide it into two substrings, one containing the string and one containing the number .
Siccome il numero deve essere dato come paramero a delay() mi serve intero, ma non riesco a convertirlo >.<
The number must be given as a parameter at delay () I need it as integer, but I can not convert it >.<
Ho provato con atoi() e con sscanf() ma mi viene restituito un numero negativo (lo controllo stampandolo a schermo con Serial.println())
I tried with atoi() and with sscanf() but it returned a negative number (checking it by screen printing it with Serial.println ())
Qualcuno di buona volontà che mi da una mano?
Can someone help me?
Inserisco sotto il codice.
This is the code.
#define serraggio 13
#define riscaldatore 2
#define salita 4
#define discesa -10
#define aspirazione 7
#define raffreddamento 8
#define sformatura 12
String x; //stringa in arrivo
String x2; //tempo
String x1; //nome operazione
int a;
int tempo;
void setup(){
pinMode (serraggio, OUTPUT); //serraggio
pinMode (riscaldatore, OUTPUT); //riscaldatore
pinMode (salita, OUTPUT); //piano
pinMode (discesa, OUTPUT); //discesa
pinMode (aspirazione, OUTPUT); //aspirazione
pinMode (raffreddamento, OUTPUT); //raffreddamento
pinMode (sformatura, OUTPUT); //sformatura
Serial.begin(9600); //lavoro a 9600
Serial.flush();
}
void loop(){
if(Serial.available()){
x= "";
x = Serial.readString();
boolean f= false;
for(int q=0; q<= x.length(); q++){
if(x.charAt(q)=='-') {
f=true; //l'operazione ha un tempo
a=q;
}
}
if(f==true){
x1= x.substring(0, a);
x2= x.substring(a+1, x.length()-1);
Serial.println(x2);
int x2l = x2.length();
char arrayTempo[x2l+1];
for(int r=0; r<= x2l; r++){
arrayTempo[r] = x2.charAt(r);
Serial.println(arrayTempo[r]);
}
//sscanf(arrayTempo, "%d", &tempo);
//tempo = atoi(arrayTempo);
Serial.println(tempo);
}
}
}