简单封装的串口通信类

这个博客介绍了一个用C++编写的串口通信类库,包括打开、关闭串口,读写数据以及串口监控等功能。通过创建文件句柄、设置通信参数和事件处理,实现了串口的高效稳定通信。
摘要由CSDN通过智能技术生成
#include "stdafx.h"
#include "SerialPort.h"

#include "assert.h"

CSerialPort::CSerialPort()
{
    memset(&m_OverlappedRead, 0, sizeof(m_OverlappedRead));
    memset(&m_OverlappedWrite, 0, sizeof(m_OverlappedWrite));
    m_bOpened = false;
    m_ReadComThread = NULL;
    m_hIDCom = NULL;
    m_dwReadLen = 0;
}

CSerialPort::~CSerialPort()
{

}

BOOL CSerialPort::OpenPort(UINT nPort, UINT nBaud)
{
    ASSERT(nPort > 0 && nPort < 5);  
    if(m_bOpened)
        return true;
    
    TCHAR szPort[15];
    TCHAR szComParams[50];
    DCB dcb;

    wsprintf(szPort, _T("COM%d"), nPort);
    m_hIDCom = ::CreateFile(szPort, 
        GENERIC_READ | GENERIC_WRITE, 
        0, 
        NULL,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
        NULL);
    if(m_hIDCom == NULL)
        return false;

    memset(&m_OverlappedRead, 0, sizeof(OVERLAPPED));
    memset(&m_OverlappedWrite, 0, sizeof(OVERLAPPED));

    COMMTIMEOUTS CommTimeOuts;
    CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
    CommTimeOuts.ReadTotalTimeoutC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值