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

}

相关推荐
go546315846515 分钟前
基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
图像处理·人工智能·深度学习·神经网络·算法
aramae26 分钟前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法
大锦终37 分钟前
【算法】前缀和经典例题
算法·leetcode
想变成树袋熊1 小时前
【自用】NLP算法面经(6)
人工智能·算法·自然语言处理
cccc来财1 小时前
Java实现大根堆与小根堆详解
数据结构·算法·leetcode
Coovally AI模型快速验证2 小时前
数据集分享 | 智慧农业实战数据集精选
人工智能·算法·目标检测·机器学习·计算机视觉·目标跟踪·无人机
墨尘游子2 小时前
目标导向的强化学习:问题定义与 HER 算法详解—强化学习(19)
人工智能·python·算法
恣艺3 小时前
LeetCode 854:相似度为 K 的字符串
android·算法·leetcode
予早3 小时前
《代码随想录》刷题记录
算法
满分观察网友z3 小时前
别总想着排序!我在数据看板中悟出的O(N)求第三大数神技(414. 第三大的数)
算法