查看: 299|回复: 7

[已解决] Arduino串口事件

[复制链接]
  • TA的每日心情
    难过
    2019-10-14 17:40
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2019-9-13 10:51 | 显示全部楼层 |阅读模式
    向各位大佬求助,学习了serialEvent(),按照书上的程序,我是直接使用的示例中的serialEvent()按照程序运行来看,不应该是在串口监视器中输入一系列字符串,在最后输入\n,然后就能看到输入的字符串了吗?但现在,只是输入了字符串,点发送就能看见输入的字符串,并不需要打\n,而且输入\n,\n也作为字符串输出出来了,这是怎么一回事呢?想请教一下。
    QQ截图20190913104859.png

    String inputString = "";        
    bool stringComplete = false;  

    void setup() {

      Serial.begin(9600);

      inputString.reserve(200);
    }

    void loop() {

      if (stringComplete) {
        Serial.println(inputString);

        inputString = "";
        stringComplete = false;
      }
    }


    void serialEvent() {
      while (Serial.available())
      {
        char inChar = (char)Serial.read();
        inputString += inChar;
        if (inChar == '\n') {
          stringComplete = true;
        }
      }
    }



    图片

    图片
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-9-13 10:54 | 显示全部楼层
    \r\n 是换行回车,是不可见的符号,通过窗口下方的下拉菜单选择即可。
    你直接输入“\n”输入的是斜杆和n两个字符
    如果你觉得以上内容帮到了你,你可以打赏支持作者
  • TA的每日心情
    难过
    2019-10-14 17:40
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2019-9-15 09:22 | 显示全部楼层
    coloz 发表于 2019-9-13 10:54
    \r\n 是换行回车,是不可见的符号,通过窗口下方的下拉菜单选择即可。
    你直接输入“\n”输入的是斜杆和n两 ...

    可能是我表达的不太清楚;
    void loop() {

      if (stringComplete) {
        Serial.println(inputString);

        inputString = "";
        stringComplete = false;
      }
    }


    void serialEvent() {
      while (Serial.available())
      {
        char inChar = (char)Serial.read();
        inputString += inChar;
        if (inChar == '\n') {
          stringComplete = true;
        }
      }
    }
    这一段程式,我的理解是在串口监视器中没有输入\n时,输入的字符就在inputstring后面叠加,当输入\n时,stringComplete就变成了true,之后运行loop中的内容,不知道我的理解哪里有误,请大佬指教,还有就是把串口监视器的右下角设置成换行符是为了什么?
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2019-9-15 09:51 | 显示全部楼层
    蜕变吧胖子君 发表于 2019-9-15 09:22
    可能是我表达的不太清楚;
    void loop() {

    '\n'就叫换行符,斜杠+n是一个整体,不是两个字符。
    不是让你输入框输入'\n',你只要下面选了换行符,每次发送末尾就会加上换行符。
    如果你觉得以上内容帮到了你,你可以打赏支持作者
  • TA的每日心情
    难过
    2019-10-14 17:40
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2019-9-15 15:39 | 显示全部楼层
    coloz 发表于 2019-9-15 09:51
    '\n'就叫换行符,斜杠+n是一个整体,不是两个字符。
    不是让你输入框输入'\n',你只要下面选了换行符,每 ...

    原来如此,明白了,非常感谢,非常感谢
  • TA的每日心情
    开心
    2019-10-14 23:02
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    发表于 2019-9-17 21:32 | 显示全部楼层
    请问: if (stringComplete) 这个表达式怎么理解,不是 if (stringComplete==flase)吗
  • TA的每日心情
    难过
    2019-10-14 17:40
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2019-9-18 14:27 | 显示全部楼层
    ardino_chen 发表于 2019-9-17 21:32
    请问: if (stringComplete) 这个表达式怎么理解,不是 if (stringComplete==flase)吗

    当为false时,if(StringComplete)后面的语句是不执行的,只有为true时才执行,false即为0,true即为1
  • TA的每日心情
    开心
    2019-10-14 23:02
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    发表于 2019-9-18 14:52 | 显示全部楼层
    蜕变吧胖子君 发表于 2019-9-18 14:27
    当为false时,if(StringComplete)后面的语句是不执行的,只有为true时才执行,false即为0,true即为1 ...

    理解了,谢谢
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【Arduino】108种传感器模块系列实验(104)---MAX30102手腕心率
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    萌新报道 刚购买了一个watchx
    萌新报道 刚购买了一个wat
    就这货 但是网上让下载库 我点加载以后他提示没法用。。 求大神帮忙 谢谢了
    【Arduino】108种传感器系列实验(15)---手指侦测心跳传感...
    【Arduino】108种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    求助!GM65二维码扫描模块怎么用?
    求助!GM65二维码扫描模块
    求助!GM65二维码扫描模块怎么用? 卖家给的资料真的看不懂该怎么弄。。( ̄▽ ̄)~*
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表