zerglingbug 发表于 2014-4-11 17:30:22

【已解决】求帮忙修改一下程序

本帖最后由 zerglingbug 于 2014-4-11 17:47 编辑

RT 从COM口读取字符串 并且通过逗号分割成4个部分 基本已经实现,唯独没法去除逗号,求大大帮忙看看是啥问题。

#include <Stdio.h>
String comdata1 = "";
char t1;
char t2;
char t3;
char t4;
int i;
int v;
int j1;
int j2;
int j3;
int j4;

void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available() > 0)
{
   comdata1 += char(Serial.read());
   delay(2);};

for(i=0,j1=0,j2=0,j3=0,j4=0,v=0;i<10;i++)
{if (v==0)
    {
      if(comdata1==',')
      v=1;
   t1=comdata1;
   j1++;
    }
   else if (v==1)
    {if(comdata1==',')
    v=2;
    t2=comdata1;
    j2++;}
    else if (v==2)
    {if(comdata1==',')
    v=3;
    t3=comdata1;
    j3++;}
    else if (v==3)
    {
    t4=comdata1;
    j4++;}   
    }
if(v==1)


int w1=atoi(t1);


Serial.print(comdata1);
Serial.print("//");
Serial.print(t1);
Serial.print("//");
Serial.print(t2);
Serial.print("//");
Serial.print(t3);
Serial.print("//");
Serial.print(t4);
Serial.println("");
if(Serial.available() > 0)
comdata1="";
for(int i=0;i<10;i++)
t1='\0';
for(int i=0;i<10;i++)
t2='\0';
for(int i=0;i<10;i++)
t3='\0';
for(int i=0;i<10;i++)
t4='\0';

}

zerglingbug 发表于 2014-4-11 17:46:58

调试出来了 在每个 if(comdata1==',')语句结束后面加个contiune跳过读取,的那一次循环就行了

Super169 发表于 2014-4-11 18:17:52

之前不是有朋友說了, 在串口讀取數字, 最简单的办法是使用 Serial.parseInt() 函数 嗎?

看你寫程式的經驗不多, 還是用簡單的方法好了.

zerglingbug 发表于 2014-4-11 19:02:02

Super169 发表于 2014-4-11 18:17 static/image/common/back.gif
之前不是有朋友說了, 在串口讀取數字, 最简单的办法是使用 Serial.parseInt() 函数 嗎?

看你寫程式的經 ...

看着说明是直接从串口读取int型,确实不用转换了, 不过其实用atoi吧char类型转成int很方便的,现在程序写粗来之后一下子豁然开朗,之前陷入僵局的时候还是有点钻牛角尖,不过不管怎么说 谢谢各位大大的无私帮助。
页: [1]
查看完整版本: 【已解决】求帮忙修改一下程序