首页 > 解决方案 > 在arduino上显示输入数据的大小和整数的输入数据

问题描述

我正在编写一个程序来定义一个新的 500 个整数的 int 数组来存储输入数据,还将输入整数转换并存储到数组中,并显示输入数据的大小并显示输入数据。

我面临的问题是我无法在串行监视器上正确显示我的输入数据。例如,如果我输入 123,它将显示输入数据 = 3 个整数,我的输入数据将变为⸮。但我想要 myint[0]=123 not myint[0]=1, myint[1]=2, myint[2]=3 所以大小应该只计算 1 个整数。

我也无法显示我在串行监视器上输入的整数。我怎么能不将空间计为输入数据的大小,例如:如果我输入“123 234”,它只会显示“输入数据的大小 = 2 个整数” "

这是我输入 123 时显示的串行监视器:

请输入
输入数据的大小 = 3 个整数

⸮

请输入

这是我的代码:

int myint[499] ;     // this is an array
char input;
int i;
    
void setup() {
  // Initialize serial and wait for port to open:  
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
}

void loop() {
  while (Serial.available() > 0) {
    input = Serial.read();
    if (input != '\n') { 
      myint[i++] = input; // last character is newline
      myint[i] = 0;       // string array should be terminated with a zero
    } else{
      input = Convertinteger(input);
      myint[i++] = input;  
      myint[i] = 0;         
      Serial.println("Please input");
      Serial.print("Size of input data =  ");
      Serial.print(i-1);
      Serial.print(" integers");
      Serial.println("");
      Serial.print(input);
      Serial.println("");
      Serial.println("");
      Serial.println("Please input");  
      i = 0;
    }
  }
}

int Convertinteger(char x) {
  if (x <= 0x39 && x >= 0x30)
    return (x - 0x30);

标签: c++arraysarduino

解决方案


这一行:

Serial.print(input);

将简单地打印输入变量中的值。输入变量是一个char包含,\n因为这if else是代码前面测试的内容。如果要打印数组中的所有三个值,则需要在数组中循环打印每个值。


推荐阅读