极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13226|回复: 5

【求助】如何让arduino串口接收1KB字符串

[复制链接]
发表于 2015-7-26 09:27:42 | 显示全部楼层 |阅读模式
最近想用串口接收1KB左右的数据,不想用修改HardwareSerial.cpp文件的办法,请问如何实现?希望能贴出代码
回复

使用道具 举报

发表于 2015-7-26 09:36:20 | 显示全部楼层
串口只能接收1字节的,自带的缓冲区不要考虑。

接收1字节,就自己存起来吧~只要存的地方够,你想多大都可以
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-26 10:58:28 | 显示全部楼层
maxims 发表于 2015-7-26 09:36
串口只能接收1字节的,自带的缓冲区不要考虑。

接收1字节,就自己存起来吧~只要存的地方够,你想多大都可 ...

不是这种情况,是我给另外一个模块发送命令,那个模块返回1KB字节的数据,我要全部接收,但好像超过串口缓存区的大小后,arduino不再接受,后面用read()只能取出在缓存区里面的数据
回复 支持 反对

使用道具 举报

发表于 2015-7-26 15:29:29 | 显示全部楼层
我用uno取esp返回的数据,数据短可以完整取,数据长取回来的不完整,感觉像是丢字符了。
不知道是不是跟你的情况一样。
回复 支持 反对

使用道具 举报

发表于 2015-7-26 15:52:44 | 显示全部楼层
sysvpn 发表于 2015-7-26 10:58
不是这种情况,是我给另外一个模块发送命令,那个模块返回1KB字节的数据,我要全部接收,但好像超过串口缓 ...

你要看你的程序處理的速度, 以及連線速度.  
如果用 9600bps, 一般接收了一個 byte 之後還要等一等, 基本上不會出現媛存區不夠用.
除非你每接收一個 byte, 都要做很多東西吧.  否則, 專注接收, 是不會有問題的.
回复 支持 反对

使用道具 举报

发表于 2015-7-28 20:38:57 | 显示全部楼层
String str = "";
  while (Serial.available()){
    str = Serial.readString();//Serial.readString()返回的是一个String,很长的字符串时也不会出现丢失
  }
  if(str.length()){
    //if(str.indexOf("Apache")>0)//查找字符串
      Serial.println(stc);
    }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-18 05:39 , Processed in 0.064494 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表