查看: 324|回复: 7

[已解决] String类型做参数传递时出现问题

[复制链接]
  • TA的每日心情
    开心
    2020-10-2 16:32
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2020-9-27 11:58 | 显示全部楼层 |阅读模式
    本帖最后由 zyzand 于 2020-9-28 10:50 编辑

    有两个函数,上面这个用来获取数据,然后第70行调用下面的Price_Analyze()来分析数据,使用String传递。
    在调用前串口打印了数据长度,调用后也打印一次数据长度
    01-01.png

    但运行后串口返回结果:
    01-02.png

    String数据传递后长度变为变为0,也就是没有传递过去。。。

    编译后内存情况如下,芯片是ESP8266:
    01-03.png

    有大佬知道是什么原因嘛?String类型不能直接做参数传递吗?


    该用户从未签到

    发表于 2020-9-27 16:22 | 显示全部楼层
    把参数里的String s 换成String& s 试试
  • TA的每日心情
    开心
    2020-10-28 06:37
  • 签到天数: 108 天

    [LV.6]常住居民II

    发表于 2020-9-27 17:42 | 显示全部楼层
    给responseData 赋个初值
  • TA的每日心情
    开心
    2020-10-2 16:32
  • 签到天数: 9 天

    [LV.3]偶尔看看II

     楼主| 发表于 2020-9-28 02:40 | 显示全部楼层
    ifeue 发表于 2020-9-27 17:42
    给responseData 赋个初值

    试过没有效果,在定义String类的时候Arduino应该已经自己初始化了。
  • TA的每日心情
    开心
    2020-10-2 16:32
  • 签到天数: 9 天

    [LV.3]偶尔看看II

     楼主| 发表于 2020-9-28 02:45 | 显示全部楼层
    a2302004040 发表于 2020-9-27 16:22
    把参数里的String s 换成String& s 试试

    改成引用传参就可以了,但为什么直接传递不行呢?
  • TA的每日心情
    无聊
    2020-8-1 21:53
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2020-9-28 10:02 | 显示全部楼层
    arduino可能不支持传值。传值可能和内存使用多有关

    点评

    嗯,的确是内存的原因,不过正常情况下传递String是没问题的,不过要在内存中复制一遍,若数据太长会占用大量内存。  发表于 2020-9-28 10:53
  • TA的每日心情
    开心
    2020-10-2 16:32
  • 签到天数: 9 天

    [LV.3]偶尔看看II

     楼主| 发表于 2020-9-28 10:49 | 显示全部楼层
    找到原因了,Blinker库运行时占用RAM太大,运行到这段代码时只剩5000bytes左右了,因此数据丢失。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    SL041MG 谁有这个VFD屏的技术资料?
    SL041MG 谁有这个VFD屏的
    itron SL041MG谁有这个VFD屏的技术资料?
    求大佬解答点灯例程无故重启
    求大佬解答点灯例程无故重
    esp8266nodemcu板 按照例程安装,刚开始一切顺利。想测试下稳定性。就出现不定时重启
    使用Arduino IDE为ESP8266烧录Blinker的AT固件总报错
    使用Arduino IDE为ESP8266
    急急急!!!!!!!!
    blinker 温度无法存储数据,附调试信息
    blinker 温度无法存储数据
    600008] message: /heartbeat?deviceName=ACC2534CLMGA6R6OI7KJAC0U&key=a9135b780e41
    Proteus仿真arduino时无法打开Atmega328?
    Proteus仿真arduino时无法
    请问这是什么原因?
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表