1

代码

    void setup() {
       Serial.begin(9600);
       int r = 0;
       Serial.print("How long\n");
       int lng = Serial.read();

       while (Serial.available() == 0) {
         //Empty
       }

       char string[] = {'0'};
       while (r < 62) {
          if(r == 10) {
             string[0] += 7;
          }
          if(r ==36) {
             string[0] += 6;
          }
          Serial.println(string);
          r ++;
          string[0] ++;
       }
       Serial.print(lng, DEC);
     }

     void loop() {

     }

好的,所以第一个问题是 line Serial.print(lng, DEC);。它在串行监视器上打印出 -1。如果我在 3 期间输入一个 3 int lng = Serial.read(),我怎样才能让它返回输入?

其次,我如何将字符串的长度设置为 lng 并确保每个空格都以 a 开头0而不是空白?


最终工作代码:

  void setup() {
     Serial.begin(9600);
     int r = 0;
     Serial.print("How long\n");
     int lng;

     while (1)
       if (Serial.available() > 0)
       {
          lng = Serial.read();
          break;
       }

     int l = (lng - 48);
     char string[l];
     for (int i = 0; i < l; i++)
        string[i] = '0';

     while (r < 62) {
        if (r == 10) {
           string[0] += 7;
        }
        if (r == 36) {
           string[0] += 6;
        }
        Serial.println(string);
        r++;
        string[0]++;
      }
      char eof = '/';
      Serial.println(eof);
 }

 void loop() {

 }

char eof = '/' 是因为我有一个与 Arduino 对话的 Python 脚本。的打印eof是一个标志,让 Python 知道它已完成打印并关闭串行连接。

4

1 回答 1

1

程序在尝试读取后进入忙等待状态。所以它不会读取任何内容。更改此部分:

int lng = Serial.read();
while(Serial.available() == 0){}

进入:

int lng;
while(1)
    if (Serial.available() > 0)
    {
        lng = Serial.read();
        break;
    }

关于第二个问题:

char myString[lng];
for (int i = 0; i < lng; i++)
    myString[i] = '0';
于 2013-05-05T20:19:04.067 回答