Arduino根据标志位输出标志位后的字符串
本帖最后由 Dzz 于 2016-7-20 16:30 编辑比发送123#321654,然后先判断标志位#,然后保存后面的321654。
问题很简单,首先判断标字符串结束,我们为字符串添加一个字符串结束标志位'0',然后判断标志位#;String inputString = ""; //串口接收的字符串
String tempString = ""; //临时存储
String outputString = ""; // 串口最终输出字符串
boolean stringComplete = false; //字符串结束标志位
int tempBegin = 0;
int i=0;
int j=0;
void setup() {
Serial.begin(9600);
}
void loop() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
//字符串结束标志,自己定义
if (inChar == '0') {
stringComplete = true;
}
}
if (stringComplete) {
Serial.println(inputString);
for(i=0;i<inputString.length();i++)
{
if(inputString=='#')
{
tempBegin=i;
}
if(i>tempBegin)
{
tempString += inputString;
}
}
for(j=0;j<tempString.length()-1;j++)
{
outputString += tempString;
}
Serial.println(outputString);
outputString = "";
tempString = "";
inputString = "";
stringComplete = false;
}
}
选中测试板卡,编译烧录,打开串口测试结果
从测试可以看出,发送123#3216540,其中0为字符串标志位,可以根据自己需要设置,得到我们想要的结果
谢谢!:lol:lol 本帖最后由 LOVE_KE 于 2016-7-21 00:17 编辑
我按照 asdffr#156515610 这样就出来不对了不知道什么情况用数字是对的
但是我重新复杂 粘贴 发送 一边 又对了 第一遍手输入 出来的不对好郁闷 LOVE_KE 发表于 2016-7-21 00:13 static/image/common/back.gif
我按照 asdffr#156515610 这样就出来不对了不知道什么情况用数字是对的
找到原因了因为你的tempBegin 初始值是0 所以第一次只能去掉第一个字母 把初始值改大一点就好了 我选的100 只要输入不超过100个字符就没有问题:lol LOVE_KE 发表于 2016-7-21 00:35 static/image/common/back.gif
找到原因了因为你的tempBegin 初始值是0 所以第一次只能去掉第一个字母 把初始值改大一点就好了 我选 ...
可以把上面的代码优化一下,那是解决网友问题随手写的,可能不太严谨
页:
[1]