📄 comport.cpp
字号:
#include "stdafx.h"
#include "ComPort.h"
CComPort::CComPort()
: m_hPort(INVALID_HANDLE_VALUE)
{
}
CComPort::~CComPort()
{
ClosePort();
}
// 初始化端口
bool CComPort::OpenPort(void)
{
ClosePort();
m_hPort = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // no security attributes
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, //同步I/O
NULL
);
if(m_hPort == INVALID_HANDLE_VALUE)
return false;
SetupComm(m_hPort, 1024, 512);
DCB dcb;
if (!GetCommState(m_hPort, &dcb))
{
ClosePort();
return false;
}
//设置COM1
dcb.BaudRate = CBR_4800; // set the baud rate
dcb.ByteSize = 8; // data size, xmit, and rcv
dcb.Parity = NOPARITY; // no parity bit
dcb.StopBits = ONESTOPBIT; // one stop bit
if (!SetCommState(m_hPort, &dcb))
{
ClosePort();
return false;
}
return true;
}
// 关闭端口
void CComPort::ClosePort(void)
{
if (INVALID_HANDLE_VALUE != m_hPort)
CloseHandle(m_hPort);
m_hPort= INVALID_HANDLE_VALUE;
}
// 发送缓冲区的数据
bool CComPort::SendBytes(const char *pBuf, unsigned int size)
{
DWORD wsize= 0;
if ((m_hPort != INVALID_HANDLE_VALUE) && (WriteFile(m_hPort, pBuf, size, &wsize, NULL)))
return true;
else
return false;
}
// 接收数据,返回接收字节数
int CComPort::Recive(char *pBuf, unsigned int size)
{
DWORD wsize= 0;
if ((m_hPort != INVALID_HANDLE_VALUE))
{
COMSTAT state;
DWORD errors;
ClearCommError(m_hPort, &errors, &state);
if ((state.cbInQue > 0) && (ReadFile(m_hPort, pBuf, size, &wsize, NULL)))
{
return wsize;
}
else
return 0;
}
else
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -