CSerialPort.h 测试某些工具

// CSerialPort.h

#pragma once

#include <windows.h>

class CSerialPort {

public:

CSerialPort();

~CSerialPort();

BOOL Open(LPCTSTR lpszPortName, DWORD dwBaudRate, BYTE byDataBits, BYTE byParity, BYTE byStopBits);

void Close();

BOOL Write(const BYTE* pBuffer, DWORD dwBytesToWrite, DWORD* pdwBytesWritten);

BOOL Read(BYTE* pBuffer, DWORD dwBytesToRead, DWORD* pdwBytesRead);

private:

HANDLE m_hComm;

};

// CSerialPort.cpp

#include "stdafx.h"

#include "CSerialPort.h"

CSerialPort::CSerialPort() : m_hComm(INVALID_HANDLE_VALUE) {}

CSerialPort::~CSerialPort() {

Close();

}

BOOL CSerialPort::Open(LPCTSTR lpszPortName, DWORD dwBaudRate, BYTE byDataBits, BYTE byParity, BYTE byStopBits) {

m_hComm = CreateFile(lpszPortName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

if (m_hComm == INVALID_HANDLE_VALUE) {

return FALSE;

}

DCB dcbSerialParams = { 0 };

dcbSerialParams.DCBlength = sizeof(dcbSerialParams);

if (!GetCommState(m_hComm, &dcbSerialParams)) {

CloseHandle(m_hComm);

return FALSE;

}

dcbSerialParams.BaudRate = dwBaudRate;

dcbSerialParams.ByteSize = byDataBits;

dcbSerialParams.Parity = byParity;

dcbSerialParams.StopBits = byStopBits;

if (!SetCommState(m_hComm, &dcbSerialParams)) {

CloseHandle(m_hComm);

return FALSE;

}

COMMTIMEOUTS timeouts = { 0 };

timeouts.ReadIntervalTimeout = 50;

timeouts.ReadTotalTimeoutConstant = 50;

timeouts.ReadTotalTimeoutMultiplier = 10;

timeouts.WriteTotalTimeoutConstant = 50;

timeouts.WriteTotalTimeoutMultiplier = 10;

if (!SetCommTimeouts(m_hComm, &timeouts)) {

CloseHandle(m_hComm);

return FALSE;

}

return TRUE;

}

void CSerialPort::Close() {

if (m_hComm != INVALID_HANDLE_VALUE) {

CloseHandle(m_hComm);

m_hComm = INVALID_HANDLE_VALUE;

}

}

BOOL CSerialPort::Write(const BYTE* pBuffer, DWORD dwBytesToWrite, DWORD* pdwBytesWritten) {

return WriteFile(m_hComm, pBuffer, dwBytesToWrite, pdwBytesWritten, NULL);

}

BOOL CSerialPort::Read(BYTE* pBuffer, DWORD dwBytesToRead, DWORD* pdwBytesRead) {

return ReadFile(m_hComm, pBuffer, dwBytesToRead, pdwBytesRead, NULL);

}

相关推荐
GuWenyue2 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
我叫洋洋3 小时前
C ++ [ hello world ]
c语言·c++·算法
奋发向前wcx4 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
战族狼魂7 小时前
高频面试题精选:分治与AI Agent架构
人工智能·算法·大模型·大语言模型
李剑一8 小时前
你用过网易的将军令嘛?它底层实现账号保护的原理相当简单粗暴
算法
Scott9999HH8 小时前
告别流量波动玄学!从法拉第电磁定律到底层 C/C++ 流量累积算法,深度解密工业级电磁流量计选型与开发
c语言·c++·算法
中达瑞和-高光谱·多光谱8 小时前
1nm到8nm光谱分辨率,你的应用该选哪款光谱相机?
算法·高光谱·高光谱相机
香辣牛肉饭9 小时前
【算法】动态规划 最长公共子序列(LCS)
经验分享·笔记·算法·动态规划
旖-旎10 小时前
LeetCode 279:完全平方数(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题