Arduino串口输入字符串匹配校验:匹配成功才继续,否则重复请求输入
实现方案
现有代码问题分析
- 缺少状态标记区分「密码校验阶段」和「主逻辑运行阶段」,校验通过后无法跳转到正常业务逻辑
- 密码匹配失败后没有主动输出重新输入的提示,用户不知道需要再次输入
- 无逻辑控制校验流程,无论是否匹配成功都会持续监听串口输入
修改后完整代码
String defaultPassword = "pass1234"; // 新增全局标记位:标记密码是否校验通过 bool isPasswordVerified = false; void setup() { Serial.begin(9600); Serial.println("Enter password: "); } void loop() { // 密码未校验通过时,仅跑校验逻辑 if (!isPasswordVerified) { while (Serial.available() > 0) { String inputPassword = Serial.readStringUntil('\n'); inputPassword.trim(); if (inputPassword == defaultPassword) { Serial.print("Correct Input: "); Serial.println(inputPassword); Serial.println("Initializing..."); // 校验通过,修改标记位 isPasswordVerified = true; // 此处可添加校验通过后的初始化代码 } else { Serial.print("Incorrect Input: "); Serial.println(inputPassword); // 校验失败,提示重新输入 Serial.println("Enter password again: "); } } // 校验未通过时直接返回,不执行后续主逻辑 return; } // -------------------------- // 此处编写校验通过后的主业务逻辑,会循环执行 // -------------------------- }
关键逻辑说明
- 全局变量
isPasswordVerified默认值为false,此时程序只会执行密码校验相关代码,不会进入主逻辑 - 密码匹配失败时会主动输出重新输入的提示,引导用户再次输入
- 密码匹配成功后将
isPasswordVerified设为true,后续loop循环就会跳过校验分支,直接执行主业务逻辑
内容的提问来源于stack exchange,提问作者Igor V
相关产品推荐
相关产品推荐

