运用WIN32 API的纯C串口读取程序
本程序是基于他人作品优化而来:
#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);
}
}
}
- 上一篇:没有了
- 下一篇:没有了