如何在Arduino中存储号码?

时间:2015-03-28 22:57:29

标签: c++ variables arduino

我把它写给了Arduino。

char incomingbytea;
char incomingbyteb;
char incomingop;
char result;

void setup()
{
    Serial.begin(9600);
}

void loop(){
    incomingbytea = 0;
    incomingbyteb = 0;
    incomingop = 0;
    result = 0;
    bytea:
    if (Serial.available() > 0) {
    incomingbytea = Serial.read();
    Serial.println("1ok");
    Serial.println(incomingbytea);
    goto byteb;
    }
    goto bytea;
    byteb:
    if (Serial.available() > 0) {
    incomingbyteb = Serial.read();
    Serial.println("2ok");
    Serial.println(incomingbyteb);
    goto op;
    }
    goto byteb;
    op:
    if (Serial.available() > 0) {
    incomingop = Serial.read();
    Serial.println("opok");
    Serial.println(incomingop);
    goto oper;
    }
    goto op;
    oper:
  result = incomingbytea + incomingbyteb;
  Serial.println(result);
  Serial.println(incomingbytea);
  Serial.println(incomingbyteb);
  Serial.println(incomingop);

}

我想做的是: - 连接到串口(检查) - 收集2个变量以进行加/减/乘/除(检查) - 收集一个变量来决定如何处理1-add,2-subtract等。(check) - 重定向脚本以执行所需的操作(稍后) - 将结果打印到序列号(检查)

问题是,当我输入1和1和1(无论如何,第三个现在不计算),结果我得到98。有帮助吗?也许变量是错误的?

1 个答案:

答案 0 :(得分:1)

首先你应该知道数字的长度,然后减去48(48是ascii表示为0),然后将数字乘以1,10,100,1000,10000,......取决于每个数字的位置

例如:字符串“233”到整数,使用自定义方法

void setup() {
  Serial.begin(9600);

}

void loop() {
  String Numero1 = "40";
String Numero2 = "50";
double Suma = StringAInt(Numero1)+StringAInt(Numero2);//+ StringAInt(Numero2);
Serial.println(Suma);



}



double StringAInt(String Dato)
{
String Numero = Dato;
char Valores [Numero.length()+1];
Numero.toCharArray(Valores,Numero.length()+1);
double NumeroEnt = 0;

for(int i = 0; i<Numero.length(); i++)
{
    int NumValores = Valores[i];
    NumValores-=48;
    double MultPor = pow(10,Numero.length()-(i+1));
    NumeroEnt += (NumValores*MultPor);
    //Serial.println(NumValores*MultPor);
}
return NumeroEnt;
}

现在你只需要用从串口接收的数据构建一个字符串,你可以简单地做数学。