当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 个人VC串口通信经验及相关知识总结

VC++
透明窗体的又一实现
橡皮区矩形 CRectTracker C# 实现
Visual Basic .NET 中多 Windows 窗体的同步
轻松实现类 MSDN 2002 界面(二)
轻松实现类 MSDN 2002 界面
数据库开发之窗体编程
一个打印报表的简单的类
SDK 程序使用SkinMagic工具包换皮肤
Windows SDK笔记(七):创建MDI窗口
Windows SDK笔记(六):使用对话框资源建立窗口
Windows SDK笔记(五):非模式对话框
Windows SDK笔记(四):模式对话框
也谈如何隐藏显示在任务栏中的对话框程序
一个托盘程序演示 -闹钟 Alert
think window procedure
再谈 CFileDialog 对话框的定制
获得 Win32 窗口句柄的更好的方法
个人考勤软件开发实例配套代码 2.1版(Update)
介绍一个操作DHTML表格的C++对象
Windows资源管理器Web视图界面

VC++ 中的 个人VC串口通信经验及相关知识总结


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 309 ::
收藏到网摘: n/a

0.多用异步通讯方式,个人一般开一个线程来监视串口数据接收;


1.个人通常采用基于ComStat.cbInQue的循环查询+WaitCommEvent等待EV_RXCHAR相结合的方式,循环查询方式准确,不丢失数据,但占CUP时间,WaitCommEvent不占时间但只能读取调用其后接到的字符.两者结合,则可以互补.必请醒的是,当进行连续大数据串行数据时,这种方式中的用WaitCommEvent来调整CUP占用时间的效果就要大打折扣了,但面对多数时间内不进行的通信的应用时,这种方式就很有用;



2.在使用ClearCommError(m_hCom,&dwErrorFlags,&ComStat);前最好可以用Sleep(); 等待一段时间,试试吧!效果很好的;



3.使用权SetCommMask(m_hCom,EV_RXCHAR);来设置WaitCommEvent事件,用SetCommMask(m_hCom,0);来中止等待;



4.个人常在接收线程使用WaitForSingleObject(一个CEvent对象,0)来手工控制线程结束,通常是在等线程执行超过一定时间后加以结束.注意CEvent对象默认是一个自动对象;


5.GetOverlappedResult和WaitForSingleObject主要区别是前期不能设置等待时间.注意这点;


6.个人多PostMessage()及函数参数传值的方式来传递接收来的数据;


(待续.......有感后随时补充)