串口数据发送和接收
- Serial.print 和 Serial.println 函数的差别,是 Serial.println 多一个换行,其余功能一样
- Serial.available() 串口是否有数据接收
- Serial.read() 从串口读取数据,读取完毕则从缓冲区清除
- Serial.write() 串口发送数据,发送数组为 Serial.write( buff,buffsize)
代码实例
String comdata = ""; //定义
//LOOP函数
loop{
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
Serial.println(comdata);
comdata = "";
}
}
comdata是一个字符串类型变量。Serial.available()是当前串口缓冲池的数据量。Serial.read()是读缓冲池的语句,每次只能读一个字节。
用了String类型变量,很简单的实现了字符到字符串的加入,还有字符串输出,赋值等麻烦问题,所以很简单的代码就能处理串口数据。
特别留意的是读串口时的delay(2)不能删掉,否则串口缓冲区不够时间接受数据。即使调小延时也会出错。具体数值也可以实验决定。
再提醒一个:comdata说是一个字符串,也是一个数组,引用每个字的话可以用comdata[0],comdata[1]。。。comdata[n]。如果我们要每个字节取出的话,可以每个引用。