WindowsAPI操作串口

本文提供了一个在Windows环境下使用C/C++进行串口通信的完整示例代码。包括串口的打开、配置、读写操作及关闭等步骤,并详细展示了如何设置波特率、数据位、奇偶校验等参数。

 

#include <windows.h>
#include <stdio.h>

int main()
{
    //1.打开串口
    HANDLE hCom;
    hCom = CreateFile("COM1",
        GENERIC_READ|GENERIC_WRITE,
        0,
        NULL,
        OPEN_EXISTING,
        0,
        NULL);
    if (hCom ==(HANDLE)-1 )
        printf("打开串口失败!\n");
    else 
        printf("打开串口成功!\n");

    //2.初始化串口
    DCB dcb;
    GetCommState(hCom, &dcb);
    dcb.BaudRate = 9600;//波特率
    //dcb.fParity = 0;//奇偶校验使能
    dcb.ByteSize = 8;//数据位
    dcb.Parity = NOPARITY;//奇偶校验
    dcb.StopBits = ONESTOPBIT;//停止位
    SetCommState(hCom, &dcb);

    SetupComm(hCom, 1024, 1024);
    COMMTIMEOUTS TimeOuts;

    //设定读超时
    TimeOuts.ReadIntervalTimeout = 1000;
    TimeOuts.ReadTotalTimeoutConstant = 5000;
    TimeOuts.ReadTotalTimeoutMultiplier = 500;

    //设定写超时
    TimeOuts.WriteTotalTimeoutConstant = 2000;
    TimeOuts.WriteTotalTimeoutMultiplier = 500;

    SetCommTimeouts(hCom, &TimeOuts);

    //清空缓冲区
    PurgeComm(hCom, PURGE_TXCLEAR|PURGE_RXCLEAR);
    Sleep(500);

    //3.读写串口
    unsigned char buf[10] = {0x00, 0x06, 'D', 'A', 'T', 'A'}; 
    BOOL bWriteStat;
    DWORD dwBytesWrite = 6;
    bWriteStat = WriteFile(hCom, buf, dwBytesWrite, &dwBytesWrite, NULL);
    if (!bWriteStat)
    {
        printf("写串口失败!\n");
    }
    else 
        printf("写串口成功!\n");

    unsigned char rBuf[1024];
    BOOL bReadStat;
    DWORD dwBytesRead;
    bReadStat = ReadFile(hCom, rBuf, 1024, &dwBytesRead, NULL);
    if (!bReadStat)
    {
        printf("读串口失败!\n");
    }
    else
    {
        printf("读串口成功!\n");
    }
    for (DWORD j = 0; j < dwBytesRead; j++)
    {
        printf("%x ", rBuf[j]);
    }
    printf("\n");
    
    //4.关闭串口
    CloseHandle(hCom);
    return 0;
}

 

转载于:https://www.cnblogs.com/fwst/p/3729318.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值