C Arduino上的意外输出
我使用的是Leonardo,我想在键入“>”和“时打印一条消息。问题是,查找“>”的代码总是查看字符0,而您正在将其追加到字符串中,因此在获得第一个非“>”字符后,您永远无法达到打印的条件C Arduino上的意外输出,c,arduino,C,Arduino,我使用的是Leonardo,我想在键入“>”和“时打印一条消息。问题是,查找“>”的代码总是查看字符0,而您正在将其追加到字符串中,因此在获得第一个非“>”字符后,您永远无法达到打印的条件 String txtMsg = ""; // a string for incoming text void setup() { Serial.begin(9600); while (!Serial); // wait for serial port to connect. Needed f
String txtMsg = ""; // a string for incoming text
void setup() {
Serial.begin(9600);
while (!Serial); // wait for serial port to connect. Needed for Leonardo only
}
void loop() {
// add any incoming characters to the String:
int got_start = 0;
while (Serial.available() > 0) {
char inChar = Serial.read();
if (inChar == '>' && !got_start) {
got_start = 1;
}
if (got_start) {
txtMsg += inChar;
}
if (inChar == '<' && got_start) {
got_start = 0;
Serial.println(txtMsg);
txtMsg = "";
}
}
}
String txtMsg=”“;//输入文本的字符串
无效设置(){
Serial.begin(9600);
while(!Serial);//等待串行端口连接。仅Leonardo需要
}
void循环(){
//将任何传入字符添加到字符串:
int got_start=0;
while(Serial.available()>0){
char inChar=Serial.read();
如果(inChar=='>'&&!启动){
got_start=1;
}
如果(已启动){
txtMsg+=英寸;
}
如果(inChar==”“它没有像我期望的那样工作。”-那么它实际上做了什么?为什么不打印您实际接收到的字符?(作为调试问题的一种手段,不是永久性的解决方案)这很有用,但是否有任何方法可以使用charAt()实现这一点
function?@mafap您了解现有代码的错误吗?您可以使用charAt()
在您添加到字符串后,但我不太确定您为什么要添加。现在我明白了。我想使用此函数,因为我需要获取字符串中不同位置的字符值。我只是不知道最好的方法是什么。
String txtMsg = ""; // a string for incoming text
void setup() {
Serial.begin(9600);
while (!Serial); // wait for serial port to connect. Needed for Leonardo only
}
void loop() {
// add any incoming characters to the String:
int got_start = 0;
while (Serial.available() > 0) {
char inChar = Serial.read();
if (inChar == '>' && !got_start) {
got_start = 1;
}
if (got_start) {
txtMsg += inChar;
}
if (inChar == '<' && got_start) {
got_start = 0;
Serial.println(txtMsg);
txtMsg = "";
}
}
}