windows下C语言版串口接收程序(基于VS2017)

#include "pch.h"


#define _CRT_SECURE_NO_WARNINGS 
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
#include "tchar.h"


int main()
{
    HANDLE hCom;
    hCom = CreateFile(_T("COM2"),//COM2口
        GENERIC_READ | GENERIC_WRITE,//允许读和写
        0,//独占方式
        NULL,
        OPEN_EXISTING,//打开而不是创建
        0,//同步方式
        NULL);
    if(hCom == (HANDLE)-1)
    {
        printf("打开COM失败!\n");
        return FALSE;
    }
    else
    {
        printf("COM打开成功!\n");
    }
    SetupComm(hCom, 20480, 20480);//输入缓冲区和输出缓冲区的大小都是1024
    
    COMMTIMEOUTS TimeOuts;//设定读超时    
    TimeOuts.ReadIntervalTimeout = 100;
    TimeOuts.ReadTotalTimeoutMultiplier = 500;
    TimeOuts.ReadTotalTimeoutConstant = 5000;    
    TimeOuts.WriteTotalTimeoutMultiplier = 500;//设定写超时
    TimeOuts.WriteTotalTimeoutConstant = 2000;
    SetCommTimeouts(hCom, &TimeOuts);//设置超时

    DCB dcb1;
    GetCommState(hCom, &dcb1);
    dcb1.BaudRate = 115200;//波特率为9600
    dcb1.ByteSize = 8;//每个字节有8位
    dcb1.Parity = NOPARITY;//无奇偶校验位
    dcb1.StopBits = TWOSTOPBITS;//两个停止位
    dcb1.fParity = FALSE;
    dcb1.fNull = FALSE;
    SetCommState(hCom, &dcb1);
    DWORD wCount = 256;//读取的字节数
    DWORD wCount1;
    PurgeComm(hCom, PURGE_TXCLEAR|PURGE_RXCLEAR);//清空缓冲区
    while(1)
    {
        int i = 0;
        FILE *fp1;
        unsigned char str[256];
        if(!ReadFile(hCom, str, wCount, &wCount1, NULL))
        {
            printf("读串口失败!");
            return FALSE;
        }        
        fp1 = fopen("串口发送的数.txt", "a+");    
        if(wCount1 > 0)
        {
            printf("wCount1:%d\n", wCount1);
        }
        printf("读串口成功!读取数据为:\n");
        for(i=0; i< wCount1; i++)
        {
            printf("%02X ", str[i]);
            fprintf(fp1, "%02X ", str[i]);
        }
        printf("\n");
        fclose(fp1);
    }

    CloseHandle(hCom);

    std::cout << "Hello World!\n";

    return 0;
}
运行效果:

配套VS2017工程下载地址:https://download.csdn.net/download/qinrenzhi/10774394

猜你喜欢

转载自blog.csdn.net/qinrenzhi/article/details/83893710
今日推荐