【岚川先生】Arduino 串口接收数据的两种方式

碎碎念

以前写代码调试的时候,没有养成写博客记录的习惯,都是将它存在本地。时间久了就很难找。以后将其写在博客吧。便于自己查,也便于后来者学习~万里长征第一步

简介

Arduino Mega2560上调试串口通信项目的时候,测试了两种串口接收数据的方法。

代码

方法一、创建一个字符型数组来实时接收

如下,创建一个长度为100的字符型数组SerialRcvBuf,当检测到串口有数据传入时,先清零数组,随后创建一个标记值rcvMark,rcvMark的值会随着读入字符串的增加而增加。最终rcvMark的值就是获取的串口接收数据值。

char SerialRcvBuf[100];
void setup() 
{
  Serial.begin(115200);
  Serial1.begin(115200);
void loop() 
{
  if(Serial1.available() > 0)
  {
    memset(SerialRcvBuf, 0, sizeof(SerialRcvBuf));// 先清空buffer
    byte rcvMark=0;
    while (Serial1.available() > 0)
    {
      SerialRcvBuf[rcvMark]= char(Serial1.read());  
      delay(2);
      rcvMark++;
    }
    Serial.println(SerialRcvBuf);
  }
}

方法二、创建一个空字符串变量来实时接收

如下:创建一个字符串变量rcvData,随后将获取到的字符逐个追加在字符串上。实现效果类似与Arduino自身的Serial.readString()函数。

String rcvData="";
void setup() 
{
  Serial.begin(115200);
  Serial1.begin(115200);
void loop() 
{
  if(Serial1.available() > 0)
  {
    while (Serial1.available() > 0)
      {
        rcvData += char(Serial1.read());  //每次读一个char字符,并相加
        delay(2);
      }
      if (rcvData.length() > 0)
      {
        Serial.println(rcvData); //打印接收到的字符
        comdata = "";
      }
  }
}
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值