如何将发向串口的数据分解
将一个命令发到下位机上,然后下位机解析命令比如命令格式为:"Command -Pin -Max -Min",
Command:命令,字符串
Pin:pin脚,字符串
Max:最大值,浮点数
Min:最小值,浮点数
空格+-,“ -”是分隔符
不知道如何将这四个部分从命令中解析出来
自己试了一下,总是得不到想要的结果String comdata="";
intmark = 0;
void setup()
{
Serial.begin(9600); //使用9600的波特率进行串口通讯/
}
void loop()
{
String StrComm,StrPort,StrMax,StrMin;
while(Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
mark = 1;
}
if(mark == 1)
{
int count=0,SI=0;
Serial.println(comdata);
Serial.println(comdata.length());
for(int i = 0; i < comdata.length() ; i++)
{
//get command
if (comdata == ' ' && comdata == '-')
{
if (count=0)
{
for(int j=0;j<i;j++)
{StrComm+=comdata;count=1;SI=i;}
Serial.println("0:");
continue;
}
if (count=1)
{
for(int j=SI+2;j<i;j++)
{StrPort+=comdata;count=2;SI=i;}
Serial.println("1:");
continue;
}
if (count=2)
{
for(int j=SI+2;j<i;j++)
{StrMax+=comdata;count=3;SI=i;}
Serial.println("2:");
continue;
}
if (count=3)
{
for(int j=SI+2;j<i;j++)
{StrMin+=comdata;count=4;SI=i;}
Serial.println("3:");
continue;
}
}
}
mark = 0;
Serial.println(StrComm);
Serial.println(StrPort);
Serial.println(StrMax);
Serial.println(StrMin);
}
} 1、将下列代码下载到arudino里String inputString = ""; // a string to hold incoming data
boolean stringComplete = false;// whether the string is complete
void setup()
{
// initialize serial:
Serial.begin(9600);
// reserve 200 bytes for the inputString:
inputString.reserve(200);
}
void loop()
{
String ss;// print the string when a newline arrives:
if (stringComplete)
{
for(int i=0;i<3;i++)
{
ss=inputString.substring(0,inputString.indexOf("-"));
Serial.println(ss);
inputString=inputString.substring(inputString.indexOf("-")+1,inputString.length());
}
ss=inputString.substring(0,inputString.length()-1);
Serial.println(ss);
// clear the string:
inputString = "";
stringComplete = false;
}
}
/*
SerialEvent occurs whenever a new data comes in the
hardware serial RX.This routine is run between each
time loop() runs, so using delay inside loop can delay
response.Multiple bytes of data may be available.
*/
void serialEvent()
{
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
}
2、打开arduino的串口监视器,波特率选9600,发送方式选Newline
3、在串口监视器中输入“Command -Pin -Max -Min”后回车,观察返回的值 sinbadcool 发表于 2014-7-9 16:43 static/image/common/back.gif
1、将下列代码下载到arudino里2、打开arduino的串口监视器,波特率选9600,发送方式选Newline
3、在串口监 ...
发送后,一点反应都没有
页:
[1]