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

}

相关推荐
古希腊掌管学习的神22 分钟前
[搜广推] 王树森推荐算法——概要
人工智能·算法·机器学习·推荐算法
MonkeyKing_sunyuhua31 分钟前
milvus 支持向量化索引的方法
python·算法·milvus
薔薇十字2 小时前
【代码随想录day62】【C++复健】 97. 小明逛公园(Floyd 算法精讲);127. 骑士的攻击(A * 算法精讲)
开发语言·c++·算法
Patience to do2 小时前
安卓课设版算法计算器
android·jvm·算法
SUN_Gyq2 小时前
C++如何实现对象的克隆?如何实现单例模式?
java·开发语言·jvm·c++·算法
CM莫问3 小时前
<论文>如何构建一个更鲁棒的Bert?
人工智能·深度学习·算法·语言模型·自然语言处理·大模型·roberta
子燕若水3 小时前
blender merge点Vertices 补洞hole(建模基础操作)
算法·blender
leing1234 小时前
125. 耍杂技的牛 acwing 贪心算法
数据结构·算法·贪心算法
A_Tai23333334 小时前
贪心算法求解跳跃游戏
算法·游戏·贪心算法
Aloha_up4 小时前
LeetCode hot100-86
算法·leetcode·职场和发展