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

}

相关推荐
青少儿编程课堂1 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛
在猴站学算法2 小时前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
Rainmicro2 小时前
【无标题】
java·数据库·算法
NEFU_Jyj12 小时前
牛客周赛R168
算法
Navigator_Z20 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
D e re k ZH21 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶21 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
雪落漂泊1 天前
C++算法 二分查找篇(上)
开发语言·c++·算法