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);

}

相关推荐
minji...18 分钟前
Linux 进程信号(二)信号的保存,sigset_t,sigprocmask,sigpending
linux·运维·服务器·网络·数据结构·c++·算法
罗湖老棍子35 分钟前
最大数(信息学奥赛一本通- P1549)(洛谷-P1198)
数据结构·算法·线段树·单点修改 区间求最大值
小O的算法实验室2 小时前
2026年KBS,赏金猎人优化算法+多无人机移动边缘计算与路径规划,深度解析+性能实测
算法·无人机·边缘计算
用户5671504710212 小时前
OpenClaw 记忆管理系统技术文档
算法
935962 小时前
练习题53-60
算法·深度优先
霖大侠2 小时前
Wavelet Meets Adam: Compressing Gradients forMemory-Efficient Training
人工智能·深度学习·算法·机器学习·transformer
AI成长日志3 小时前
【笔面试算法学习专栏】二分查找专题:力扣hot100经典题目深度解析
学习·算法·面试
lcreek3 小时前
流量优化之道:Ford-Fulkerson 最大流算法
算法·
垫脚摸太阳3 小时前
第 36 场 蓝桥·算法挑战赛·百校联赛---赛后复盘
数据结构·c++·算法
Aaswk3 小时前
刷题笔记(回溯算法)
数据结构·c++·笔记·算法·leetcode·深度优先·剪枝