串口通讯

tongyong66 2007-04-23 09:18:02
利用串口读取下位机单片机的数据,请问能否一下子读取32M的数据,能否设置这么大的缓冲区?请高手执教,谢谢。
...全文
274 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
renhaobin2000 2007-05-08
  • 打赏
  • 举报
回复
Waiting4you(毛毛) 是正解!
  • 打赏
  • 举报
回复
使用SerialPort.h和SerialPort.app可以设置无限大的缓冲区,它的原理是每接受一个字符,就执行onComm()函数一次,当你设定好定时器,或是长度计数器后,就可以很方便的使用。
我刚学,就知道这一点,也不知对不对,仅供参考!~
Waiting4you 2007-04-25
  • 打赏
  • 举报
回复
对了,处理完了加个ms->Clear()清空,再存放下一个32M数据
Waiting4you 2007-04-25
  • 打赏
  • 举报
回复
TMemoryStream *ms=new TMemoryStream;
Comm::OnRead(void *buf,int size) //串口数据读入时
{
ms->Write(buf,size); //读到数据就写到流里
if(ms->Size>=32*1024*1024) //如果>=32M
{
Process(ms->Memory,ms->Size); //处理你那32M的数据
}
}
tongyong66 2007-04-24
  • 打赏
  • 举报
回复
To:waiting4you,怎样放到TMemoryStream里, 能否详细指教?
tongyong66 2007-04-24
  • 打赏
  • 举报
回复
请问:输入缓冲区最大能够设置多大?readfile每次最多读多少数据,资料上说最多读64K,是真的吗?
Waiting4you 2007-04-23
  • 打赏
  • 举报
回复
没试过,即使可以那也得传个半天时间, 这个TimeOut时间比较难把握.

如果不用TimeOut那就得读到指定的数据数才会返回,但谁能知道它在中途有没有挂了:-(,

So 偶建议一点点读,然后先放到一个TMemoryStream里,等读到32M了再说
zwh202342 2007-04-23
  • 打赏
  • 举报
回复
晕,读那么大的数据要串口干么!用别的东西吧!
constantine 2007-04-23
  • 打赏
  • 举报
回复
分包传,然后慢慢传吧,而且波特率要比较高,不然等死你
如果可以用USB通信,这样速度就比较快了,串口一般不用来做大数据的通信
信念 2007-04-23
  • 打赏
  • 举报
回复
一次读32M???
用Timer接受不好么。。。只要有数据传回就接受

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧