今天小编要和大家分享的是接口,总线,驱动相关信息,接下来我将从如何利用api函数实现串口通信,n380通讯; →通过安装我们免费提供的虚拟串口软件,用户基于串口的这几个方面来介绍。
接口,总线,驱动相关技术文章如何利用api函数实现串口通信
1、打开串口
win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用api函数createfile来打开或创建的。该函数的原型为:
handlecreatefile(lpctstrlpfilename,
dworddwdesiredaccess,
dworddwsharemode,
lpsecurity_attributeslpsecurityattributes,
dworddwcreationdistribution,
dworddwflagsandattributes,
handlehtemplatefile);
各个参数说明如下:
lpfilename:将要打开的串口逻辑名,如“com1”;
dwdesiredaccess:指定串口访问的类型,可以是读取、写入或二者并列;
dwsharemode:指定共享属性,由于串口不能共享,该参数必须置为0;
lpsecurityattributes:引用安全性属性结构,缺省值为null;
dwcreationdistribution:创建标志,对串口操作该参数必须置为open_existing;
dwflagsandattributes:属性描述,用于指定该串口是否进行异步操作,该值为file_flag_overlapped,表示使用异步的i/o;该值为0,表示同步i/o操作;
htemplatefile:对串口而言该参数必须置为null;
2、配置串口
在打开通讯设备句柄后,常常需要对串口进行一些初始化配置工作。这需要通过一个dcb结构来进行。dcb结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用dcb结构来作为缓冲区。在打开串口后,可以调用getcommstate函数来获取串口的默认配置,该函数获取一个dcb结构体,只要在该结构内对应该先修改dcb结构,然后再调用setcommstate函数以修改后的dcb结构设置串口。dcb主要有以下几个重要的成员:bytebytesize;//通信字节位数byteparity;//指定奇偶校验方法。此成员可以有下列值://evenparity偶校验noparity无校验//markparity标记校验oddparity奇校验bytestopbits;//指定停止位的位数。此成员可以有下列值://onestopbit1位停止位//twostopbits2位停止位//one5stopbits1.5位停止位
除了使用bcd设置串口的一些基本参数外,一般还需要设置串口收发数据缓冲区的大小和超时,超时的作用是在指定的时间内没有读入或发送指定数量的字符,读写操作仍然会结束。windows用i/o缓冲区来暂存串口输入和输出的数据,如果通信的速率较高,则应该设置较大的缓冲区。我们可以使用api函数setupcomm设置串口的输入和输出缓冲区的大小,其原型如下:boolsetupcomm(handlehfile,//串口句柄dworddwinqueue,//输入缓冲区的大小(字节数)dworddwoutqueue);//输出缓冲区的大小(字节数)