Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Arduino中存储数字?_C++_Variables_Arduino - Fatal编程技术网

C++ 如何在Arduino中存储数字?

C++ 如何在Arduino中存储数字?,c++,variables,arduino,C++,Variables,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.a

我已经把这封信写给了阿杜伊诺

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-加,2-减,等等(检查) -重定向脚本以执行所需的操作(稍后) -将结果打印到串行(检查)


问题是,当我输入1,1和1时(不管怎样,第三个现在不算),结果是98。有什么帮助吗?可能是变量错了?

首先你应该知道数字的长度,然后减去48(48是0的ascii表示),然后将数字乘以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;
}
void setup(){
Serial.begin(9600);
}
void循环(){
字符串Numero1=“40”;
字符串Numero2=“50”;
双色漆=色漆(Numero1)+色漆(Numero2);//+色漆(Numero2);
序列号:println(Suma);
}
双弦绘画(弦达托)
{
字符串Numero=Dato;
字符值[数字长度()+1];
数字目录(Valores,数字长度()+1);
双倍数值=0;

对于(int i=0;i在最后打印时,未修改的值是什么?我问的原因是,如果输入1和1,它们可能都是49。原因是49是“1”的ascii值。您可能需要将ascii字符值转换为实际整数,您可以用它们做一些计算。这可能很简单将变量更改为int。我不熟悉如何在Arduino上从串行端口读取数据,因此无法进行测试,但您可以添加到问题中的任何细节都将帮助您获得一个好答案。正如前面提到的,您可能希望使用
parseInt
函数。@retiredInja它们是98,1,1,1。我将尝试parseInt,并更新任务ION不要减去
48
,减去
'0'
。相同的行为,但更清晰。