我一直在尝试在基于arduino的项目和我的pc之间实现串行通信,我需要通过串行向arduino发送命令,并使用“if and else”调用所需的函数(在parseMessage()函数中)。
我不能使用delay(),因为我使用中断进行多路复用和位角调制,所以我必须以另一种方式进行串行通信,这是我最接近成功的方式,但总体而言,我仍然会遇到字符跳跃和不稳定。正如你所知,除了你不知道自己的代码出了什么问题之外,编码是非常棒的,所以请帮助我,请诸位互联网之神!;)
我之所以使用“#”作为html" target="_blank">字符串清除的结尾,是因为我不能确定发送给arduino的命令中的所有字符在串行时都在那里。read()需要它,因为atmega328比串行端口串行速度快,所以可能会有更多。available()可能在传输过程中实际返回-1。
>
ps:哦,我不能使用字符串类,它非常昂贵,这个atmega328已经在8x8 RGBLED多路复用和4位角度调制下汗流浃背,他将来还得做更多。
ps:我还在学英语,所以如果我用的语法有问题,请原谅。
void setup() {
Serial.begin(9600);
}
bool dataRTP = false; // data ready to parse
void loop() {
readSerial();
}
char message[64];
int index = 0;
void readSerial() {
if (Serial.available() > 0)
while (Serial.available() > 0)
if (Serial.peek() != '#') // i'm using '#' as end of string declearation.
message[index++] = Serial.read();
else {
message[index++] = '\n';
dataRTP = true;
break;
}
while (Serial.read() != -1) {} // flushing any possible characters off of
if (dataRTP) // UARTS buffer.
parseMessage();
}
void parseMessage() { // just testing here, actual code would be like :
Serial.print(message); // if (!strcmp(message, "this expression"))
index = 0; // callthisfunction();
dataRTP = false; // else ... etc
}
刚刚设法修复了这段代码,似乎从串行通用异步收发设备上冲洗数据并不是一个好主意。都解决了。下面是代码现在的样子:
void setup() {
Serial.begin(9600);
}
bool dataRTP = false;
void loop() {
readSerial();
}
char message[64];
int index = 0;
void readSerial() {
if (Serial.available() > 0)
while (Serial.available() > 0)
if (Serial.peek() == '#') {
message[index++] = Serial.read();
message[index++] = '\0';
dataRTP = true;
break;
}
else
message[index++] = Serial.read();
if (dataRTP)
parseMessage();
}
void parseMessage() {
Serial.println(message);
index = 0;
dataRTP = false;
}
我尝试从长字符串中获取字符串,该字符串是Firebase URL 现在,如果您注意到上面字符串中姓名朱利安之前和之后的分数不足。我试图得到这个名字,但我正在得到 这是我的代码
我正在和两个阿杜伊诺斯·莱昂纳多做一个通讯系统。为了传输,我必须将字符串转换成比特,并通过PWM引脚发送。问题是,我该怎么做接收器? 我的想法是在数字引脚中接收数据,这样我就可以将LOW/HIGH转换为'0'和'1',将8位放在字符串中,转换为char,然后我就有了最后的字符串。 如有任何帮助/建议,将不胜感激。 编辑: 我使用PWM是因为我想实现FSK调制,一点一点地发送 我有一些硬件来让通讯系
字符串用于存储文本。 它们可用于在LCD或Arduino IDE串行监视器窗口中显示文本。 字符串对于存储用户输入也很有用。 例如,用户在连接到Arduino的键盘上键入的字符。 Arduino编程中有两种类型的字符串 - 字符数组,与C编程中使用的字符串相同。 Arduino String,它允许我们在草图中使用字符串对象。 在本章中,我们将学习字符串,对象以及Arduino草图中字符串的使用。
问题内容: 我的程序将覆盖以使用 现在someString可能会很长,因此可能不适合一行。 在多行上编写文本的最佳方法是什么。 例如,在矩形(x1,y1,x2,y2)中? 问题答案: 感谢Epaga的提示和网上的一些示例(查找起来并不那么明显!我主要使用Break Line作为文本布局 ),我可以制作一个组件来显示包装的文本。它是不完整的,但至少可以显示预期的效果。 只是为了好玩,我使它适合一个圆
获取输入字符串,将其反转并用“-”进行解析: 输入:计算机 输出: 为什么这段代码会出现错误,以及如何删除错误? 出现以下错误: 主要的java:3:错误:类ClassSet15是公共的,应该在名为ClassSet15的文件中声明。java公共类ClassSet15{^1错误
我在servlet中的代码是: int gid=整数。parseInt(request.getParameter(“deleteid”)); 其中deleteid是jsp中隐藏的表单字段。glassfish服务器日志指出,java.lang.NumberFormatException:对于输入字符串:“2/”