查看: 1636|回复: 9

[已解决] Arduino串口事件

[复制链接]
  • TA的每日心情
    无聊
    2019-11-25 09:09
  • 签到天数: 21 天

    [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-11-25 09:09
  • 签到天数: 21 天

    [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-11-25 09:09
  • 签到天数: 21 天

    [LV.4]偶尔看看III

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

    原来如此,明白了,非常感谢,非常感谢
  • TA的每日心情
    开心
    2020-2-21 15:25
  • 签到天数: 22 天

    [LV.4]偶尔看看III

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

    [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的每日心情
    开心
    2020-2-21 15:25
  • 签到天数: 22 天

    [LV.4]偶尔看看III

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

    理解了,谢谢
  • TA的每日心情
    开心
    2018-8-19 14:26
  • 签到天数: 6 天

    [LV.2]偶尔看看I

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

    那能直接输入换行符么?不选择下面选项
  • TA的每日心情
    奋斗
    2019-7-12 18:42
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-9-27 15:18 | 显示全部楼层
    再见51 发表于 2020-9-26 00:26
    那能直接输入换行符么?不选择下面选项

    看你用的软件支不支持,至少Arduino IDE自带的,要下面选
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    【Arduino】168种传感器系列实验(170)---L293D四路电机驱动板
    【Arduino】168种传感器系
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    ntc测温度不稳定,温度乱飘
    ntc测温度不稳定,温度乱
    arduino刚刚开机的时候是24度 然后就慢慢升到了26度过了一会又飘到22度了。想了好久也
    Arduino mini pro 的 D0(IO 0) 在哪儿?
    Arduino mini pro 的 D0(
    Arduino mini pro 的 D0 在哪儿?????我找不到求大神指导一下? GPS模块VCC------
    blinker 温度无法存储数据,附调试信息
    blinker 温度无法存储数据
    600008] message: /heartbeat?deviceName=ACC2534CLMGA6R6OI7KJAC0U&key=a9135b780e41
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表