如何利用api函数实现串口通信

网友投稿 609 2022-10-23

如何利用api函数实现串口通信

1、打开串口

win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用api函数createfile来打开或创建的。该函数的原型为:

dworddwsharemode,

dworddwflagsandattributes,

handlehtemplatefile);

各个参数说明如下:

lpfilename:将要打开的串口逻辑名,如“com1”;

dwdesiredaccess:指定串口访问的类型,可以是读取、写入或二者并列;

dwsharemode:指定共享属性,由于串口不能共享,该参数必须置为0;

lpsecurityattributes:引用安全性属性结构,缺省值为null;

htemplatefile:对串口而言该参数必须置为null;

2、配置串口

commtimeouts结构的成员都以毫秒为单位。总超时的计算公式是:

总超时=时间系数×要求读/写的字符数+时间常量

例如,要读入10个字符,那么读操作的总超时的计算公式为:

读总超时=readtotaltimeoutmultiplier×10+readtotaltimeoutconstant

通过该结构体windowsapi为我们提供两个函数:getcommtimeouts和setcommtimeouts,前者获取当前的超时设置,后者使用修改后的commtimeouts设置超时,与设置串口阐述类似。

在读写串口之前,还要用purgecomm(…)函数清空缓冲区,该函数原型:

boolpurgecomm(

handlehfile,//串口句柄

dworddwflags);//需要完成的操作

参数dwflags指定要完成的操作,可以是下列值的组合:

purge_txabort中断所有写操作并立即返回,即使写操作还没有完成。

purge_rxabort中断所有读操作并立即返回,即使读操作还没有完成。

purge_txclear清除输出缓冲区

purge_rxclear清除输入缓冲区

3、读写串口

读写串口使用readfile和writefile两个函数,其原型如下:boolreadfile(handlehfile,//串口的句柄lpvoidlpbuffer,//保存读入数据的指针,dwordnnumberofbytestoread,//要读入的数据的字节数lpdwordlpnumberofbytesread,//实际读入的字节数lpoverlappedlpoverlapped);//overlapped,同步为null

boolwritefile(

handlehfile,//串口的句柄

lpcvoidlpbuffer,//要写入数据的地址

dwordnnumberofbytestowrite,//要写入数据的字节数

lpdwordlpnumberofbyteswritten,//实际写入的字节数

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:#yyds干货盘点#如何删除 Docker 镜像、容器、网络和卷
下一篇:Web三大组件之Filter,Listener和Servlet详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~