当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要:在Windows95下使用串口API函数实现PC机与单片机AT89C51的串口通信,重点介绍计算机采用事件驱动I/O方式的函数编程及单片机串口中断发送、接收程序的实现。
  关键词:Windows95 单片机AT89C51 RS-232接口 RS-485接口 串行通信
  在以单片机为基础的数据采集和实时控制系统中,通过计算机中的RS-232接口进行计算机与单片机之间的命令和数据传送,就可以利用计算机对生产现场进行监测和控制。由于计算机上的RS-232所传送的距离不超过30m,所以,在远距离的数据传送和控制时,可以用MAX485的接口转换芯片将RS-232转换成RS-485协议进行远距离传送。在发送和接收端都进行协议转换后,RS-485协议对数据传送来说是相对透明的,所以依然可以使用计算机中的RS-232进行远距离的数据传送和控制。在最简单的RS-232直接传送通信系统中,只要发送和接收双方同时准备好,仅用信号发送端(TXD),信号接收端(RXD)和信号地(GND)3根线即可进行通信;若以应答方式进行数据通信,可使用请求发送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据装置准备(DSR)进行硬件握手。在Windows95下,可以很方便地使用Win32通信API函数来实现这些硬件的握手以及数据的传送。在89C51单片机系统中,分别从P3.0和P3.1引出串口线RXD和TXD通过专用的电平转换芯片转换成RS-232接口标准的电平,这样,二者之间就可以通过RS-232接口进行数字信号的传送。单片机也可以以直接传送或应答握手的方式进行数据通信,但由于握手方式占用其他的端口,而单片机的端口数量有限,所以,计算机与单片机的通信常采用直接传送的方式,本文将重点介绍。

1 Windows95下的通信编程
  Windows95通信体系提供了1个改进的串行应用程序接口SAPI用来进行交互式串行通信。其中,串口和其他通信设备是作为文件进行处理的,串口的打开、关闭、读取和写入所用的函数和操作文件的函数相同。
  通信会话以调用CreateFile函数开始,CreateFile函数为读访问或写访问打开串口,打开成功后返回该串口句柄,供读写串口时使用。CreateFile函数的使用如下:
CreateFile(szDevice,fdwAccess,fdwShareMode,lpsa,fdwCreate,fdwAttrsAndFlags,hTemplateFile)
  其中,第1个参数szDevice是要打开的串口逻辑名,如COM1或COM2;第2个参数fdwAccess指定串口的访问类型,如读、写或两者兼而有之,大部分通信是双向的,因而通常设置为:GENERICREAD|GENERICWRITE;第3个参数fdwShareMode指定串口的共享属性,串口不能共享,所以它必须为0;第4个参数lpsa引用安全性属性结构;第5个参数fdwCreate指定如果CreateFile正被已有的文件调用时应做些什么,既然串口总是存在,此参数就必须被设置为OPENEXISTING。第6个参数fdwAttrsAndFlags描述了该端口的各种属性,对串口而言,唯一有意义的设置是FILEFLAGOVERLAPPED,指定该设置时,端口I/O可以在后台进行;最后1个参数hTemplateFile是指向模板文件的句柄,当端口打开时,该参数为NULL。
  打开串口后,在Windows95下可以对串口进行合适的配置。Windows95提供了COMMPROP结构,COMMPROP结构中包含了对串口允许的设置,如波特率、数据位数、停止位的个数以及奇偶校验方法等,如果串口连接到调制解调器,COMMPROP结构中还包含调制解调器支持的设置。但COMMPROP结构给出的只是单纯的信息,它不能用来改变串口的设置。Windows95下串口设置的改变是通过改变它的DCB结构来实现的,DCB结构中包含了所有串口的设置,其中包括硬件的握手、流控制等。
  Windows95提供GetCommState函数来得到当前串口的设置情况,该函数接收1个打开的端口句柄和1个指向DCB结构的指针,在DCB结构中返回信息,GetCommState函数的补充函数是SetCommState函数,SetCommState函数将DCB结构中的内容写向串口设置,这2个函数的调用如下:
  BOOLGetCommState(hComm,&dcb)
  BOOLSetCommState(hComm,&dcb)
  其中,hComm为打开串口的句柄,dcb为1个指向DCB的结构。
  Windows95中实现串口的读写函数与文件的读写函数相同,读写函数的使用格式如下:
  ReadFile(hComm,inbuff,nBytes,&nBytesRead,&overlapped)
  WriteFile(hComm,outbuff,nBytes,&nBytesWrite,&overlapped)
  其中,第1个参数是打开串口的句柄,第2个参数是数据所使用的缓冲区,第3个参数是要读取的字节数,第4个参数是实际读取的字节数,实际读取的字节数可能小于要读取的字节数,最后1个参数指向1个覆盖似的结构,当CreateFile中dwAttrsAndFlags参数设置为FILEFLAGOVERLAPPED时,此参数可以指定1个OVERLAPPED结构,使数据的读写操作在后台进行。
  读写端口可以通过4种技术来实现:查询、同步I/O、异步I/O(后台I/O)和事件驱动I/O。查询方式直接、易于理解,但占用大量CPU时间;同步I/O直到读取所指定字节数或超时时才返回,这样很容易长时间地阻塞线程;异

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭