原创 网管让线了~~~正式解答串口数据丢失的问题

2008-7-13 23:27 4042 5 6 分类: MCU/ 嵌入式

问题见: http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=3031251



hotpower 发表于 2008-7-13 23:20 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

26楼: 网管让线了~~~正式解答串口数据丢失的问题


常用的通讯方式肯定是我们MCU人的MCU<->PC.

而数据丢失看着好象总是PC的问题,实际不能单凭感觉判断.

应该首先检查各自多能出现的错误,最简单而有效的方法是各自自环测试.

即将PC的2,3脚短路(当然MCU要脱机了,废话一下~~~),再用常用的串口

调试工具在一定的波特率下自发自收.

俺喜欢汽车电子的串口通V3.20,下载地址: http://blog.ednchina.com/hotpower/66284/message.aspx

如果自环测试通过,在不考虑长线通讯带来的时延,则认为MCU可能有错.

再将MCU上的DB9的2,3脚短路,再MCU上编一个很小的自发自收程序.

在接收程序里进行比较,结果可以用LED/LCD等输出.

若不通过,肯定是MCU的问题.

若通过则问题就复杂了~~~

一般可能也肯定是MCU的错误,不妨再与PC联机,并将停止位改为2位

或MCU发送程序在发送一块数据包后加点停顿, 这样处理后应该不会出大问题.

若再出现问题,且PC侧的串口软件采用常用控件如MSComm,SPComm等,

这就带来了控件的正确应用的问题了~~~

再谈控件的正确应用的问题:

俺看过很多MCU编写的上位机应用程序,包括汽车电子的串口通~~~

哈哈~~~小小的批评一下汽车电子~~~

MCU人编写的串口控件有时很倒塌~~~思路全是MCU的裸奔或OS奔,和PC的Windows事件驱动机制有很大的冲突~~~

所以大家可以看出串口通的CPU占有率大的毛病所在~~~

所以它只能作为调试而不能应用到用户真正的程序中...

大家有没注意到---俺的帖图几乎全是串口通????哈哈~~~因为它很美~~~

可惜它不如HotComm很黄很暴力~~~

因为它是用CVI自带的串口函数编的,而HotComm是用API函数重新用多线程封装的~~~

所以即使一样的PC端程序,结果相差可谓万里~~~

PC端正确的编程:

接收端:
1.一定要在控件的事件或回调函数中编写.

2.每次在事件或回调函数中编写的代码停留时间不要过长.

  最好在下次引发事件或回调前退出.

3.应该正确选择或适当调整每次引发事件或回调的接收字节数目.

4.应该正确选择或适当调整接收缓冲区的大小.


总之,MCU人只要把PC的事件触发看成中断来编程即可~~~


结论: 一个巴掌拍不响~~~

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1029521 2009-5-9 16:26

博主,你好: 我在LABCVI里编写了一个多线程的 程序,设计2个线程,每个线程完成对俩个串口的通讯,但是每次执行都出现串口不能通讯,并且程序不能正常退出和串口没有被释放,请教原因???
相关推荐阅读
雁塔菜农 2012-04-05 17:51
2012年度新唐Cortex-M0助学开发套件有约束条件赠送申报贴
2012年度新唐Cortex-M0助学套件从4月起每月有约束条件发放16套。 申报人必须是21ic或 EDNC 会员 并具备1月的会龄。 申报时必须注明“遵守约束条件,缴纳250元订金,上...
雁塔菜农 2012-04-05 17:04
2012年度Cortex-M0助学园地推广框图
...
雁塔菜农 2012-04-01 17:59
2012年度Cortex-M0助学园地奖励计划细则
抢楼请点击:菜地公告:即日起创建《菜农Cortex-M0助学园地》(盖楼入口) 每月10号和25号的下午2:50进行2次抢楼,规则同去年12月的疯狂抢楼活动。 奖品由21IC、北航、广州迪圣...
雁塔菜农 2012-02-03 08:19
菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
http://www.baidu.com/s?wd=%B2%CB%C5%A9%D0%A6%CC%B8%A1%B6%D0%C2%C0%CB%C3%FB%C8%CB%D0%A7%D3%A6%A1%B7...
EE直播间
更多
我要评论
1
5
关闭 站长推荐上一条 /3 下一条