与Arduino处理字符串的方式混淆
Confused with the Way of Arduino Processing String
void setup()
{
Serial.begin(9600); //Set serial baud rate 9600
pinMode(13,OUTPUT); //Set LED for output
}
String str;
void loop()
{
if(Serial.available() > 0)
{
char ch = Serial.read();
str += ch;
}
if (str == "Hi")
{
digitalWrite(13,HIGH); //Turns on the LED if "Hi" is entered.
}
if (str == "Bye")
{
digitalWrite(13,LOW); //Turns off the LED if "Bye" is entered.
}
}
我有一个问题。 我想我不知道Arduino在读取String时是如何工作的。这是我的草图。如您所见,如果输入"Hi",则打开 LED,如果输入"再见",则关闭。这编译得很好,但是每当我连接串口,上传它并打开带有"Hi"字样的LED,我都无法关闭带有"再见"字样的LED。此外,如果我先输入"再见",然后输入"嗨",LED 不会亮起。
我的代码有什么问题?如何修改它?
好吧,在我看来,一旦命中,您应该清除您的str var。因为它听起来像是第一个字符串有效,但从不适用于第二个字符串。
检测到 Hi 或再见后,设置输出并清除 str。
在接受(或拒绝(命令后,必须清除str
:
str=NULL;
或
str="";
或
str=new String();
所有这些都将为str
分配一个空(或空(字符串。
我建议你开始学习 c++。
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 在AVX通道中混洗的最佳方式
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- 我可以以相同的方式使用 char* c 和字符串吗?
- 如何以这种方式处理字符串数组
- 有没有一种递归的方式来制作这个字符串数组?
- 如何以适当的方式使用子字符串
- Newline更改了C 中打印从文件读取的字符串的方式
- 如何以优雅高效的方式将无符号/有符号整数/长整型转换为 C 字符串?
- 我可以使用什么方法或方式将用户输入的字符串转换为 C++ 中的整数
- 字符串中的空格是否会改变程序解释它的方式
- 如何将 boost::beast 中的序列化数据转换为字符串,以便我可以以 FIFO 方式处理它?
- 在现代C++中初始化字符串的方式是否有不同
- 以一种方式使用字符串选择(如果语句)
- 以简单且更少的代码方式将字符串添加在一起
- 如何以定义良好的线程安全方式将C++字符串传递给Java JNI
- 使用stl以不同方式拆分字符串
- 在c++中以这种方式创建字符串数组是否正确?
- 用这种方式比较字符串是个好方法吗
- 以正确的方式将字符串转换为整数