win32 读取串口数据

发布时间 2023-08-04 16:58:31作者: 失落''80
 1 #include <Windows.h>
 2 #include <iostream>
 3 
 4 //blog.csdn.net/wowocpp/article/details/80610385
 5 int main()
 6 {
 7     //全局变量,串口句柄
 8     HANDLE hCom=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0, NULL,OPEN_EXISTING, 0,NULL);
 9     if(hCom==(HANDLE)-1)
10     {
11         printf_s("打开COM失败!");
12         return FALSE;
13     }
14     else
15     {
16         SetupComm(hCom,1024,1024); //输入缓冲区和输出缓冲区的大小都是1024
17         COMMTIMEOUTS TimeOuts;
18         //设定读超时
19         TimeOuts.ReadIntervalTimeout=1000;
20         TimeOuts.ReadTotalTimeoutMultiplier=500;
21         TimeOuts.ReadTotalTimeoutConstant=5000;
22         //设定写超时
23         TimeOuts.WriteTotalTimeoutMultiplier=500;
24         TimeOuts.WriteTotalTimeoutConstant=2000;
25         SetCommTimeouts(hCom,&TimeOuts); //设置超时
26 
27         DCB dcb;
28         GetCommState(hCom,&dcb);
29         dcb.BaudRate=9600; //波特率为9600
30         dcb.ByteSize=8; //每个字节有8位
31         dcb.Parity=NOPARITY; //无奇偶校验位
32         dcb.StopBits=TWOSTOPBITS; //两个停止位
33         SetCommState(hCom,&dcb);
34 
35         PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);
36 
37         //同步读串口
38         char str[100];
39         DWORD wCount;//读取的字节数
40         BOOL bReadStat;
41         bReadStat=ReadFile(hCom,str,100, &wCount, NULL);
42         if(!bReadStat)
43         {    
44             printf_s("读串口失败!");
45             return FALSE;
46         }
47         else
48         {
49             printf_s("%s",str);
50         }
51     }
52 
53     system("pause");
54     return 0;
55 }