相关推荐
-
重叠I/O(Overlapped I/O)
重叠函数(如:WSARecv)的参数中都有一个 Overlapped 参数,我们可以假设是把我们的WSARecv这样的操作“绑定”到这个重叠结构上,提交一个请求,而不是将操作立即完成,其他的事情就交给重叠结构去做,而其中重叠结构又要与Windows的事件对象“绑定”在一起,这样我们调用完 WSARecv 以后就可以“坐享其成”,等到重叠操作完成以后,自然会有与之对应的事件来通知我们操作完成,然后我们就可以来根据重叠操作的结果取得我们想要的数据了。套接字的重叠I/O模型才是真正意义上的异步I/O模型。
-
关于OVERLAPPED之用法
OVERLAPPED,顾名思义为重叠,乍一看会很奇怪,重叠?谁跟谁重叠?似乎在WIN32的Programming中没有这个概念呀?要讨论这个问题就要追溯到对设备I/O的访问中 在WIN32中,用户不能象以前那样直接对硬件进行访问,使得这一层对开发者而言是个"黑盒",而是提供了一组对应的API的接口.让开发者基于提供的接口进行开发,而把低层的访问交给了Driver或者内核. 在WIN32中,
-
win32串口同步、异步编程
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。 在Win32下,可以使
-
C++串口通信
一、串口通信的基本原理 串口的本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位(bit);在接收数据时,串行的位被转换为字节数据。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。典型地,串口用于 ASCII 码字符的传输。通信使用3根线完成:地线,发送数据线,接收数据线。 串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行...
-
overlapped
最近要研究串口通信,其中用到了overlapped结构,一直不能理解, 今天在网上看到有人这样解释overlapped,太经典的解释了。 OVERLAPPED结构主要在一些重叠IO等异步操作中起作用。 即:你需要操作系统传递一批数据,于是填了一个overlapped的订单,订单上写着从哪里(数据的偏移位置)开始传输,于是你去干别的事去了。系统完成传输就打个电话(激活hEvent)叫你验收,
-
线程中CreateEvent和SetEvent及WaitForSingleObject的用法
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,程锁定方面. CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象.EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。 WaitForSingleObject()等待,直到参数所指定的OBJECT成为发信号...
-
使用命名管道的OVERLAPPED方式实现非阻塞模式编程
命令管道是进程间通讯的一种常用方式,对于命令管道的介绍可以参考别的资料和书籍,这里推荐一个《VC++下命名管道编程的原理及实现》这篇博文,写得比较清楚。但是都是介绍了阻塞模式的编程,我这里主要是介绍利用命令管道OVERLAPPED方式使用非阻塞模式编程。注:文中使用的方法就是函数的意思。 参考MSDN,服务器端创建命令管道(使用CreateNamedPipe方法),不使用FILE_FLAG_OV
-
C/C++串口通信(2)-重叠操作
重叠操作时,操作还未完成函数就返回。 重叠I/O非常灵活,它也可以实现阻塞。有两种方法可以等待操作完成: 一种方法是用象WaitForSingleObject这样的等待函数来等待OVERLAPPED结构的hEvent成员; 另一种方法是调用GetOverlappedResult函数等待。 //OVERLAPPED结构 typedef struct _OVERLAPPED { // o DW
-
串口WriteFile 句柄无效 的解决
原文来自:http://bbs.csdn.net/topics/390359398?page=1#post-395222951 最近在写串口的程序,上网查了一些文章,都大同小异。按照作者的代码,写了一个串口异步操作的程序,带总是不对,总是遇到句柄无效或参数错误的问题。上论坛发现有这问题的人不少,但都没有解决办法。最后无奈之下,上MSDN查了文档,终于解决了问题,现在拿出来跟大家分
-
第6章 Overlapped I/O, 在你身后变戏法 ---1
这一章描述如何使用 overlapped I/O(也就是 asynchronous I/O)。某些时候 overlapped I/O 可以取代多线程的功用。然而,overlapped I/O 加上completion ports,常被设计为多线程处理,以便在一个“受制于 I/O 的程序”(所谓 I/O bound 程序)中获得高效率。 译注 深层讨论 Win32 平台(WinN...
-
重叠I/O模型
本文转自 http://blog.csdn.net/wcl0715/archive/2006/04/25/676060.aspx SIP是Session Initiation Protocol的缩写(我个人更倾向于simple internet protocal,也许某天你会同意我的观点),关于这个定义,RTC和网络上有很多或清晰或晦涩的说明,我不想再累述,这里我只想用我个人的
-
第六章 设备管理(2)
与设备无关的I/O软件 1.设备独立性(无关性) 用户编程时所用的设备名(逻辑上的)与实际物理设备无关; 好处: ①设备分配时的灵活性 3个物理设备(如打印机),程序中申请一台打印机,执行时不拘泥必须是某台(如第2个)打印机 ②易于实现I/O重定向 指用于I/O操作的设备可以更换(重定向),而不必改变应用程序。 程序调试、运行中的“打印”,可通过修改逻辑设备表的显示终端,实现不同时候的不同的设备使...
-
重叠(overlapped)模型
/////////////////////////////////////////////////////// // OverlappedServer.cpp文件 #include #include #include #include #pragma comment(lib, "WS2_32") #define BUFFER_SIZE 1024 typedef struct _SO
-
重叠I/O详解
在windows中有一个api叫readfile bool readfile( handle hfile, // handle to file lpvoid lpbuffer, // data buffer
-
重叠IO overlapped I/O 运用详解
2009年02月21日 星期六 下午 07:54 I/O设备处理必然让主程序停下来干等I/O的完成,对这个问题有 方法一:使用另一个线程进行I/O。这个方案可行,但是麻烦。 即 CreateThread(…………);创建一个子线程做其他事情。 Readfile(^…………);阻塞方式读数据。 方法二:使用overlappe...
5 楼 dyhunter 2009-04-22 14:36
4 楼 night_stalker 2009-04-22 13:51
3 楼 AllenZhang 2009-04-22 13:11
2 楼 lordhong 2009-04-22 12:39
1 楼 fanlei77 2009-04-22 10:49