C++ 读取串口输入到字符串
C++ read Serial input to String
我需要将串行输入从控制台获取到一个字符串。
当用户在控制台中键入 "xyz" 并按回车键时,字符串 "input" 应定义为 "xyz"。从那时起,我将解释字符串。
这是我目前拥有的:
定义:
char input[] = {0};
char bufferChar[] = {0};
使用:
bool canInput = true;
while(canInput == true) {
if(Serial.available() > 0) {
char bufferChar2 = Serial.read();
bufferChar[1] = bufferChar2;
strcpy(input[1], input[1]);
strcat(input[1], bufferChar[1]);
Serial.print(input);
tft.print(input);
}
}
我是 c 的新手,如果这段代码不好,我深表歉意。
在此先感谢,
林纳斯
char bufferChar[] = {0};
这声明了一个只有一个元素的数组。
bufferChar[1] = bufferChar2;
这试图设置单元素数组中第二个元素的值。缓冲区溢出。未定义的行为。
strcpy(input[1], input[1]);
这毫无意义。除了想要 strcpy
() 自身之上的东西背后的可疑原因之外,input
是一个 char
数组,所以 input[1]
是一个单一的 char
值,而 strcpy()
需要 char *
个参数。
这一行一定让您的编译器发出了一堆警告 and/or 错误。请不要忽略来自编译器的诊断消息。那是编译器告诉你你做错了。
strcat(input[1], bufferChar[1]);
因此,我们正在尝试 strcat
() 另一对 char
而不是 char *
。这不会比尝试 strcpy()
做同样的事情更好。
即使您的编译器接受这个,根据我的统计,生成的代码至少会以三到四种不同的方式崩溃。
您需要:
声明 input
和 charBuffer
数组,它们的大小足以满足您打算对它们执行的操作。
将指针而不是 char
传递给 strcpy()
(如果需要)和 strcat()
.
char *
参数,strcpy()
和 strcat()
数组必须是空终止字符串。您有责任以“\0”结束每个参数。虽然有几种方法可以获得此 "for free",但如果您有疑问,请明确地以 0 终止它们。
我需要将串行输入从控制台获取到一个字符串。 当用户在控制台中键入 "xyz" 并按回车键时,字符串 "input" 应定义为 "xyz"。从那时起,我将解释字符串。 这是我目前拥有的:
定义:
char input[] = {0};
char bufferChar[] = {0};
使用:
bool canInput = true;
while(canInput == true) {
if(Serial.available() > 0) {
char bufferChar2 = Serial.read();
bufferChar[1] = bufferChar2;
strcpy(input[1], input[1]);
strcat(input[1], bufferChar[1]);
Serial.print(input);
tft.print(input);
}
}
我是 c 的新手,如果这段代码不好,我深表歉意。 在此先感谢, 林纳斯
char bufferChar[] = {0};
这声明了一个只有一个元素的数组。
bufferChar[1] = bufferChar2;
这试图设置单元素数组中第二个元素的值。缓冲区溢出。未定义的行为。
strcpy(input[1], input[1]);
这毫无意义。除了想要 strcpy
() 自身之上的东西背后的可疑原因之外,input
是一个 char
数组,所以 input[1]
是一个单一的 char
值,而 strcpy()
需要 char *
个参数。
这一行一定让您的编译器发出了一堆警告 and/or 错误。请不要忽略来自编译器的诊断消息。那是编译器告诉你你做错了。
strcat(input[1], bufferChar[1]);
因此,我们正在尝试 strcat
() 另一对 char
而不是 char *
。这不会比尝试 strcpy()
做同样的事情更好。
即使您的编译器接受这个,根据我的统计,生成的代码至少会以三到四种不同的方式崩溃。
您需要:
声明
input
和charBuffer
数组,它们的大小足以满足您打算对它们执行的操作。将指针而不是
char
传递给strcpy()
(如果需要)和strcat()
.char *
参数,strcpy()
和strcat()
数组必须是空终止字符串。您有责任以“\0”结束每个参数。虽然有几种方法可以获得此 "for free",但如果您有疑问,请明确地以 0 终止它们。