chap6-多线程编程技术全解.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap6-多线程编程技术全解

计算机控制工程 第五节 多线程两台计算机串口通信程序 以串口程序设计为例说明: 使用WinAPI编写串口程序时,为实现事件驱动方式,可以考虑单独建立一个线程,在该线程中循环检测串口事件,当串口发生感兴趣事件时,就发送消息,通知其它线程到串口读取数据。 当使用多个串口时,使用多线程为每个串口开辟一个线程,处理各个串口的数据接收。当有接受数据时,通过某种方式传输给主线程进行显示和处理。 计算机控制工程 多线程应用框架 一 以两台计算机间通信的程序为例多线程编程的具体方法。 … …. ON_MESSAGE(WM_MYMSG, OnReceiveEvent) … … … …. hThreadEvent=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProcEvent, dwParam, 0, dwThreadID); … … DWORD ThreadProEvent(LPVOID pParam) { //… //满足某种条件时; ::PostMessage(hWnd, WM_MYMSG, 0, (LPARAM)EV_RXCHAR); ……. } LONG CPC2PCView::OnReceiveEvent(…) { …… //读取串口操作 …… } 第五节 多线程两台计算机串口通信程序 计算机控制工程 两台计算机之间通信方式 二 第五节 多线程两台计算机串口通信程序 1. 通过网线传输 2. 通过USB线传输 3. 通过并口传输(SPP、ECP) 4. 通过串口传输(2RxD、3TxD号线对调) 计算机控制工程 第五节 多线程两台计算机串口通信程序 通信协议 三 1. 通信流程 通信采用发送/应答半双工方式。通信过程分为: 发送请求和发送文件 两个过程。 发送请求: 发送方首先发出请求包,并等待应答方响应。 若收到应答方ACK( 6)响应,发送数据包; 若收到应答方NAK(21)响应,重发请求包; 若收到应答方CAN(24)响应,取消本次发送请求; 计算机控制工程 第五节 多线程两台计算机串口通信程序 发送文件: 发送方将待发送的文件以1024字节为单位拆分成N个数据片段,最后一个数据片段长度不定。每次使用普通数据包发送一个数据片段,若接受方接受正确,会发送一个ACK响应,发送方在收到正确的响应后,继续发送含有下一个数据片段的普通数据包;若发送方收到NAK响应,则重发上一次发送的普通数据包。这个发送过程需要循环N-1次。 当发送方发送到第N个数据片段时,使用结束包格式进行发送,若接受方正确响应ACK,则通信正常结束;若接受方响应NAK,则发送方重发含有第N个数据片段的接受包 计算机控制工程 第五节 多线程两台计算机串口通信程序 重要说明: 发送方对于同一个数据包的重发操作,设定最多进行3次。3次后,发送方若仍接受不到ACK响应,则中断文件传输操作,并提示通信错误。 思考: 如用4个字节表示文件长度;则文件最大长度是多少? 给定合法长度文件,如何填装4个字节; 计算机控制工程 第五节 多线程两台计算机串口通信程序 数据包格式 四 1. 请求包 长度由文件名长度决定 从ENG开始到其前面所有字节的异或运算和 2. 普通数据包 计算机控制工程 3. 结束包 第五节 多线程两台计算机串口通信程序 4. 响应包:长度固定为1个字节。 计算机控制工程 第五节 多线程两台计算机串口通信程序 通信实现思路 五 通信程序使用Windows API事件驱动方式、多线程技术。 在程序中,为通信的事件检测设立一个单独的事件线程,该线程负责监视串口事件。当串口收到字符或发生读超时时,该线程便发送相应消息。通信消息响应函数捕获事件线程发送的消息,并根据消息类型进行处理。 所有消息公用一个消息响应函数,故设置3个反映当前通信状态的变量,进入消息响应函数后,通过对这些通信状态变量值的不同采取不同的操作。 计算机控制工程 第五节 多线程两台计算机串口通信程序 1. 功能描述 双机通信程序。既可作为发送方使,也可作为接受方使用。程序运行后,自动进入接受态。 2. 事件线程函数 为处理通信事件,专门建立一个事件线程。在该事件线程函数中,监视串口事件的当前消息,包括是否收到新字符和是否发送超时。当收到新字符或发生超时,便发送Windows消息。 计算机控制工程 第五节 多线程两台计算机串口通信程序 事件线程函数处理流程图 计算机控制工程 3. 消息响应函数 第五节 多线程两台计算机串口通信程序 既可作为发送又可作为接受程序: 1: 发送状态; 10:接受状态 0态:表示发送操作尚未开始,程序处于接受状态。程序初次启

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档