|
我当时也是搞到头都疼。因为在学C语言时候,直接调用STRING的头文件的。在这里我也研究了好久,原来有它自己的方式 以下是我搜集的资料。。你可以看看写法
希望帮助到你
首先介绍下Arduino中处理字符串的常用方法:
charAt(n)----返回字符串中第n个字符
compareTo(S2)----和给的S2字符串比较
concat(S2)----返回字符串和字符串S2合并后的新字符串
endsWith(S2)----如果字符串是以S2结尾的就返回TRUE
equals(S2)----如果字符串和S2完全相符,就返回TRUE
equalsIgnoreCase(S2)----和equal一样,但是不限制大小写
getBytes(buffer,len)----拷贝提供的字符长度到字节缓冲中
indexOf(S)----返回提供的字符串的索引,如果没有就返回-1
lastIndexOf(S)----和indexOf()一样,但是从字符串尾部开始
length()----返回字符串中的字符数
replace(A,B)----用字符串B替换A
setCharAt(index,c)----把c存储在给定的字符串的索引位置
startsWith(S2)----如果字符串以S2开始就返回TRUE
substring(index)----返回一个从给定索引到结尾的新的字符串
substring(index,to)----同上,但是到给定的to为结束的新的字符串
toCharArray(buffer,len)----从字符串0长度开始到给定的缓冲长度拷贝
toInt()----返回字符串中数字为整数值
toLowerCase()----把字符串全部转化为小写
toUpperCase()----把字符串全部转化为大写
trim()----返回一个去前后空格的字符串
例子一:保存字符串特定有效位
arduino如何串口接收以特定字符为开头的字符串并且保存特定字符之后的有效位。如串口输入a11,判断字符串第一个字符为a,若为a则保存之后的数值11到comdata。
String inString = ""; // string to hold input
int comdata;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
while (Serial.available() > 0) {
int inChar = Serial.read();
if ((char)inChar == 'a') {
do {
inChar = Serial.read();
inString += (char)inChar;
}
while (isDigit(inChar));
comdata=inString.toInt();
Serial.println(comdata);
inString = "";
}
}
inString = "";
delay(200);
}
例子二:字符串处理 - 分离字符串
这里用到了Arduino中带的substring( )方法 与java中的类似
/*
将用逗号分隔的字符串分离出来
*/
String message= "A,B,C"; //要分离的字符串
int commaPosition;//存储还没有分离出来的字符串
void setup()
{
Serial.begin(9600);//打开串口,设置波特率为9600
}
void loop()
{
Serial.println(message);//串口打印要分离的字符串
do
{
commaPosition = message.indexOf(',');//检测字符串中的逗号
if(commaPosition != -1)//如果有逗号存在就向下执行
{
Serial.println( message.substring(0,commaPosition));//打印出第一个逗号位置的字符串
message = message.substring(commaPosition+1, message.length());//打印字符串,从当前位置+1开始
}
else
{ //找到最后一个逗号,如果后面还有文字,就打印出来
if(message.length() > 0)
Serial.println(message);
}
}
while(commaPosition >=0);
delay(5000);
}
|
|