c语言sscanf函数的用法是什么
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~