mscomm又糊了。

liu_nike 2004-09-06 05:53:05
又見鬼了。
原來是單片机給PC發送數据要在每發送一個字節后插入延時.在PC端才能逐個收到數据.
現在是PC給單片机發送數据也的在每發送一個字節后插入延時.在單片机端才能逐個收到數据.
單片机是以接收中斷接收數据的.如果不加延時. 會掉數据.好像是單片机接收數据的識別太慢了.
...全文
89 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
my_wei 2004-10-24
  • 打赏
  • 举报
回复
一段VB代码实现mscomm读取数,转换用DP+spcomm怎么写呀
http://community.csdn.net/Expert/topic/3486/3486032.xml?temp=.5334131
caojinrong 2004-09-09
  • 打赏
  • 举报
回复
延时?你用的是查询法读取串口的吗?鉴于串口的速度,当然要延时才能收到所有数据了。我建议使用中断法。

PC端的编程倒好办一点,设置RThreshold,如果单片机传过来的数据字长不定的话,加上无用的,使其保持字长一致,这样,只有PC机接收到RThreshold个字节时,才会产生中断。

单片机端也是一样,一次接收中断就把数据存入一个数组中,当接收到你要的那么多字节时再去干你的事。
liu_nike 2004-09-09
  • 打赏
  • 举报
回复
想法不錯. 我單片机采用中斷接收. 查詢發送. 半雙工通訊. 為節省資源BCD碼收發.
事實証明. 如果PC一次灌入一串數据的話. 單片机肯定無法正确接收.校驗出錯.
pc也是一樣. 不過我倒是沒有試RThreshold..等下去試.

如果单片机传过来的数据字长不定的话,加上无用的
--------------> 不懂您的意思. 能否詳細解釋.
zt31 2004-09-08
  • 打赏
  • 举报
回复
不会啊
lovebeethoven 2004-09-08
  • 打赏
  • 举报
回复
学习
liuberlin 2004-09-06
  • 打赏
  • 举报
回复
同感,我原来做的一个东东在VB环境中可以单步运行,和单片机通迅也没有问题。但是生成EXE后就不行了,搞了半天都不知问题出在哪。后来我加了延时程序后,就没有这个问题了。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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