- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理和接口技术第11章可编程串行通信接口(8250
本章内容位于书本P509—P541 可编程串行通信接口 了解: 串行通信的一般概念 工作方式、同步方式、数据格式、物理标准 串行通信的接口标准 EIA RS-232C 可编程串行异步通信接口8250(UART) 连接、编程、应用 UART: Universal Asynchronous Receiver Transmitter (2)初始化串口 BOOL SetupComm( HANDLE hFile, // 通信设备句柄 DWORD dwInQueue, // 输入缓冲区大小 DWORD dwOutQueue // 输出缓冲区大小 ); (3)关闭窗口 BOOL CloseHandle( HANDLE hObject // 需要关闭的设备句柄 ); (4)串口配置 BOOL GetCommState( HANDLE hFile, // 通信设备句柄 LPDCB lpDCB // 设备控制块 ); BOOL SetCommState( HANDLE hFile, //通信设备句柄 LPDCB lpDCB //设备控制块 ); (5)串口属性 BOOL GetCommProperties( HANDLE hFile, //通信设备句柄 LPCOMMPROP lpCommProp // 通信属性结构 ); (6)读串口操作 BOOL ReadFile( HANDLE hFile, // 设备句柄 LPVOID lpBuffer, // 数据缓冲 DWORD nNumberOfBytesToRead, // 读取的字节数 LPDWORD lpNumberOfBytesRead, // 实际读的字节数 LPOVERLAPPED lpOverlapped // overlapped结构 ); (7)写串口操作 BOOL WriteFile( HANDLE hFile, // 设备句柄 LPVOID lpBuffer, // 数据缓冲 DWORD nNumberOfBytesToWrite, // 写的字节数 LPDWORD lpNumberOfBytesWrite, // 实际写的字节数 LPOVERLAPPED lpOverlapped // overlapped结构 ); (8)异步I/O操作 异步(重叠)I/O操作是指应用程序可以在后台读或写数据,而在前台做其他事情。要异步操作,需要使用,这首先要CreateFile()函数的dwFlagAndAttributes参数中使用FILE_FLAG_OVERLAPPED标识,读写串口必须指定OVERLAPPED结构: typedef struct _OVERLAPPED { ULONG_PTR Internal; // 操作系统保留 ULONG_PTR InternalHigh; // 操作系统保留 DWORD Offset; // 文件传输的初始位置 DWORD OffsetHigh; // 文件传输的高位字 HANDLE hEvent; // I/O操作完成后触发的事件 } OVERLAPPED; 异步I/O操作可以用GetOverlappedResult()函数来获得结果 BOOL GetOverlappedResult( HANDLE hFile, // 设备句柄 LPOVERLAPPED lpOverlapped, // overlapped结构 LPDWORD lpNumberOfBytesTransferred, // 传送的字节数 BOOL bWait // 指定函数是否等待挂起的异步操作完成 ); 异步I/O的时候,Windows可以用WaitForSingleObject()函数来检查事件对象。 DWORD WaitForSingleObject( HANDLE hHandle, // 对象句柄 DWORD dwMilliseconds // 内部超时时间 ); (9)超时设置 异步(重叠)I/O操作读写串口引入超时结构,在超时时间到的时候,如果读写还没结束,则读写会强行终止。异步时,强行终止的读写动作实际传输的字符数在OVERLAPPED结构中返回。超时结构如下: typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout; //两字符间的最大时间间隔 DWORD ReadTotalTimeoutMultiplier; //计算读操作总超时的超时系数 DWORD
您可能关注的文档
最近下载
- 低压作业实操科目三安全隐患图片题库(10页).pdf VIP
- 2024年广西国际商务职业技术学院单招职业适应性测试试题及答案解析.docx VIP
- 2024年广西机电职业技术学院单招职业适应性测试试题及答案解析.docx VIP
- 2024-2025学年上海市杨浦区九年级上学期期中考试数学试卷含详解.docx VIP
- 出院患者随访话术培训.pptx VIP
- 2024年江西机电职业技术学院单招职业适应性测试试题及答案解析.docx VIP
- 2024年广西理工职业技术学院单招职业适应性测试试题及答案解析.docx VIP
- 中国地理空白图(政区、分省轮廓、地形铁路空白图.doc VIP
- 2025至2030中国智慧停车系统行业城市级平台建设及运营维护分析研究报告.docx
- 单基因遗传病.pptx VIP
原创力文档


文档评论(0)