CSerialPort串口类最新修正版(解决关闭死锁问题)2014-01-11
摘要:这是一份优秀的类文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,类的封装方面等等。Remon提供的串口类网址为: http://codeguru.earthweb.com/network/serialport.shtml,由于已经运行十几年了,原文的问答部分列出来这么多年来的问题,经过网友们的总结,补充和修改原来代码后,整理出一份相对比较完美的代码。此外还附带一份小项目的源代码,它超越了串口助手,给人一种耳目一新的感觉。亮点如下:1. 它解决了串口关闭时出现死锁不响应问题,可以直接用到开发的项目上。2. 并且是扩展了的串口助手,具有通信协议编辑和使用功能,3. 软件升级检测,值得
阅读全文
posted @
2014-04-07 15:39
bitbit
阅读(2825)
推荐(0) 编辑
串口通讯编程一日通4(串口基本操作)
摘要:前几篇大概介绍了串口的相关几个结构,了解后开始进入Windows API的基本操作1.CreateFile创建打开串口用指定的方式打开指定的串口,注意文件在Windows的概念很广泛,包括:文件、通讯设备、命名管道、邮件、磁盘和控制台。我们前面声明了句柄/*串口句柄*/HANDLEm_hComm;那么接下来可以这样创建:m_hCom = CreateFile( "COM1", //串口1 GENERIC_READ | GENERIC_WRITE, //指定可以对串口进行读写操作 0, //表示串口为独占打开 NULL, OPEN_EXISTING, //表示当指定串口不存在
阅读全文
posted @
2014-04-07 15:28
bitbit
阅读(1215)
推荐(0) 编辑
串口通讯编程一日通3(COMMTIMEOUTS DCB整理)
摘要:上一篇看了Overlapped IO模型后,接下来看剩下两个重要结构:2.COMMTIMEOUTS结构 超时设置COMMTIMEOUTS:COMMTIMEOUTS主要用于串口超时参数设置。COMMTIMEOUTS结构如下: typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout; //读间隔超时 DWORD ReadTotalTimeoutMultiplier;//读时间系数 DWORD ReadTotalTimeoutConstant;//读时间常量 DWORD WriteTotalTimeoutMultiplier;//...
阅读全文
posted @
2014-04-07 15:26
bitbit
阅读(1018)
推荐(0) 编辑
串口通讯编程一日通2(Overlapped IO模型)
摘要:第一篇初步了解串口的大致运作,接下来我们看基本操作先看串口操作的数据结构:串口操作有几个比较重要的Struct1.Overlapped I/O 异步I/O模型异步I/O和同步I/O不同,同步I/O时,程序被挂起,一直到I/O处理完,程序才能获得控制。异步I/O,调用一个函数告诉OS,进行I/O操作,不等I/O结束就立即返回,继续程序执行,操作系统完成I/O之后,通知消息给你。Overlapped I/O只是一种模型,它可以由内核对象(hand),事件内核对象(hEvent), 异步过程调用(apcs) 和完成端口(I/O completion)实现。Overlapped数据结构:typedef
阅读全文
posted @
2014-04-07 15:24
bitbit
阅读(4340)
推荐(0) 编辑
串口通讯编程一日通1(整合资料)
摘要:串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。本文以VC++为平台进行串口通信编程串口通讯在VC++下实现方式有很多,控件自然是最简单话的方式了,但由于控件只支持对话框程序,有些场合又不需要对话框,所以用Windows API实现是比较好的方式串行通信的操作方式1.同步方式同步方式中,读串口的函数试图在串口的接收缓冲区中读取规定数目的数据,直到规定数目的数据全部被读出或设定的超时时间已到时才返回[cpp] view plaincopyprint?COMMTIMEOUTStimeOver;//COMMTIMEOUTS结构用于设置读写函数的等待时间。 me
阅读全文
posted @
2014-04-07 15:23
bitbit
阅读(1033)
推荐(0) 编辑