MSCOMM控件一次OnComm事件只能获取8个,那么单片机里面是不是也是一次只能收8个?

Featured 2005-04-17 10:51:08
我测试过了,“MSCOMM控件一次OnComm事件只能获取8个”,有没有办法修改之?

另外,我最关心的是:“单片机里面是不是也是一次只能收8个?”
...全文
113 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mazhayang 2005-05-05
  • 打赏
  • 举报
回复
你肯定错了,在mscomm读取字节个数是自己设定的
单片机的缓冲区是来了就取走,再来再取走
Yijingsong 2005-04-20
  • 打赏
  • 举报
回复
单片机一次能接收几个字节,我想SBUF寄存器一次只能收一个吧,可能需要一个循环来实现连续接收多个字节。
Yijingsong 2005-04-20
  • 打赏
  • 举报
回复
m_comm.SetSettings("57600,n,8,1"); //波特率XXXX,无校验,8个数据位,1个停止位
m_comm.SetRThreshold(8); //参数8表示每当串口接收缓冲区中有多于或等于8个字符时将引发一个接收数据的OnComm事件
m_comm.SetInputLen(0); //设置当前接收区数据长度为0
m_comm.GetInput();//先预读缓冲区以清除残留数据



上面第二句
flowercity 2005-04-19
  • 打赏
  • 举报
回复
我dos下tc编程,一次读取一个字节,循环读取
我windows下cbc编程,设置缓冲区,或者第三方控件,直接读取缓冲区所有数据
clovexmu 2005-04-19
  • 打赏
  • 举报
回复
没有这种事!我以前串口控件用得好好得。看看是不是哪里设置得不好导致无法接收全部数据!
或者两台电脑串口互连,调试看看!
sun4216 2005-04-18
  • 打赏
  • 举报
回复
MSCOMM应该可以修改,不过我没有试过。其实PC的COM内部的BUFFER很大(随串口控制器的不同而不同),可以连续的接收。“MSCOMM控件一次OnComm事件只能获取8个”只是因为软件设定而已。我直接用API编程就没有这样的问题。单片机一次能接收几个也是和内部结构有关,一般有BUFFER的的串口可以直接接收BUFFER大小个字节而不需要CPU处理;没有BUFFER的只能接收一个,需要CPU读出才能再接收;如果串口有DMA控制器的,一般原则上可以接收任意多个字节(仅仅受限制于内部RAM大小)。
Featured 2005-04-18
  • 打赏
  • 举报
回复
8个字节啊?你没有遇到过这个烦心的问题吗?
icesnows 2005-04-18
  • 打赏
  • 举报
回复
获取8个什么?
Featured 2005-04-18
  • 打赏
  • 举报
回复
谢谢楼上的,但我还是想就事论事,先解决这个问题

我不信没人做过,苦苦等候
98440622 2005-04-18
  • 打赏
  • 举报
回复
串口有DMA控制器??太夸张了吧~~

8个字节的原因是ReadFile(...)函数造成的,如果对方一次发送的数据比较长如30个字节,那么用ReadFile读数据时会读4次,分别是8+8+8+6,我想MSCOMM用的方法就是这样,至于怎么修改我就不知道了,我的习惯是使用API完成数据读写,如果楼主需要的话我可以提供给你。

单片机和Windows下操作的方法完全不同,一般是采用直接对8250或单片机串口控制寄存器操作来完成,上层应用需要收发多少个字节完全自己掌握。

27,381

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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