入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

运用WIN32 API的纯C串口读取程序

创建时间:2017-07-08 投稿人: 浏览次数:875

本程序是基于他人作品优化而来:


#include <Windows.h>
#include <stdio.h>


HANDLE hCom;
int main(void) {
hCom=CreateFile(TEXT("COM3"),//COM3口
               GENERIC_READ|GENERIC_WRITE, //允许读和写
               0, //独占方式
               NULL,
               OPEN_EXISTING, //打开而不是创建
               0, //同步方式
               NULL);
if(hCom==(HANDLE)-1) {
printf("打开COM失败! ");
return FALSE;
} else {
printf("COM打开成功! ");
}


SetupComm(hCom,1024,1024); //输入缓冲区和输出缓冲区的大小都是1024


/*SET UP THE COMMTIMEOUTS STRUCT*/ 
COMMTIMEOUTS TimeOuts;
//设定读超时
TimeOuts.ReadIntervalTimeout=1000;
TimeOuts.ReadTotalTimeoutMultiplier=500;
TimeOuts.ReadTotalTimeoutConstant=5000;
//设定写超时
TimeOuts.WriteTotalTimeoutMultiplier=500;
TimeOuts.WriteTotalTimeoutConstant=2000;
SetCommTimeouts(hCom,&TimeOuts); //设置超时 !mportant


/*SET UP THE DCB STRUCT*/ 
DCB dcb;
GetCommState(hCom,&dcb);
dcb.BaudRate=115200; //波特率为115200
dcb.ByteSize=8; //每个字节有8位
dcb.Parity=NOPARITY; //无奇偶校验位
dcb.StopBits=ONESTOPBIT; //1个停止位
SetCommState(hCom,&dcb); //设置dcb !mportant 


DWORD wCount;//读取的字节数
BOOL bReadStat;
char str[2];
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR); //清空缓冲区
while(1) {
bReadStat=ReadFile(hCom,str,2,&wCount,NULL);
if(!bReadStat) {
printf("读串口失败!");
return FALSE;
} else {
str[2]="";
printf("%s",str); 
}
}

}



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像