将 ASCII 连接到字符串以进行比较
Concatenate ASCII to String for comparaison
我将 Arduino 与串行总线一起使用,并尝试根据我在总线上发送的 ASCII 字词使其进行交互。我浏览了很多网站并找到了很多解决方案,但无法真正找到我要找的东西。
例如,如果我发送“123”:
char requestBuffer[10];
void loop(){
if (Serial.available() > 0){
int bytesRead = Serial.readBytesUntil('\n', requestBuffer, 10);
char mott[3];
mott[0] = (int)requestBuffer[0];
mott[1] = (int)requestBuffer[1];
mott[2] = (int)requestBuffer[2];
Serial.println(mott); // it does print 123
if ( mott == 123 ){ // doesn't works
blablabla.
}
}
}
我真的不知道如何将键入的内容正确存储在变量中以便进行比较。我对 C 不太友好,所以也许有一些方法可以做到这一点,但我还不明白。
char mott[3];
必须是 char mott[4] = {0};
否则您的 println
调用中没有 NUL 终止符。目前你的程序的行为是未定义的。由于不幸的事故,您的 println
目前可以正常工作。
获得 mott
数组后,使用 int n = atoi(mott);
将 char
字符串转换为 int
。这里数组 mott
衰减 为 char*
指针,这是 atoi
.
可接受的类型
(表达式 mott == 123
将指向 mott
数组第一个元素的 char*
指针与 123 进行比较,这几乎肯定不是。)
我将 Arduino 与串行总线一起使用,并尝试根据我在总线上发送的 ASCII 字词使其进行交互。我浏览了很多网站并找到了很多解决方案,但无法真正找到我要找的东西。
例如,如果我发送“123”:
char requestBuffer[10];
void loop(){
if (Serial.available() > 0){
int bytesRead = Serial.readBytesUntil('\n', requestBuffer, 10);
char mott[3];
mott[0] = (int)requestBuffer[0];
mott[1] = (int)requestBuffer[1];
mott[2] = (int)requestBuffer[2];
Serial.println(mott); // it does print 123
if ( mott == 123 ){ // doesn't works
blablabla.
}
}
}
我真的不知道如何将键入的内容正确存储在变量中以便进行比较。我对 C 不太友好,所以也许有一些方法可以做到这一点,但我还不明白。
char mott[3];
必须是 char mott[4] = {0};
否则您的 println
调用中没有 NUL 终止符。目前你的程序的行为是未定义的。由于不幸的事故,您的 println
目前可以正常工作。
获得 mott
数组后,使用 int n = atoi(mott);
将 char
字符串转换为 int
。这里数组 mott
衰减 为 char*
指针,这是 atoi
.
(表达式 mott == 123
将指向 mott
数组第一个元素的 char*
指针与 123 进行比较,这几乎肯定不是。)