|
|
@@ -1,4 +1,4 @@
|
|
|
-#include "../pch/pch.h"
|
|
|
+#include "../pch/pch.h"
|
|
|
#include "CSerialPort.h"
|
|
|
|
|
|
CSerialPort::CSerialPort(
|
|
|
@@ -36,17 +36,17 @@ CSerialPort::~CSerialPort()
|
|
|
|
|
|
}
|
|
|
|
|
|
-// 打开串口成功,返回 true
|
|
|
+// 鎵撳紑涓插彛鎴愬姛,杩斿洖 true
|
|
|
|
|
|
bool CSerialPort::openComm()
|
|
|
{
|
|
|
std::wstring realPort = _T("\\\\.\\") + m_portNum;
|
|
|
m_hComm = CreateFile(realPort.c_str(),
|
|
|
- GENERIC_READ | GENERIC_WRITE, //允许读和写
|
|
|
- 0, //独占方式
|
|
|
+ GENERIC_READ | GENERIC_WRITE, //允许读和写
|
|
|
+ 0, //鐙�崰鏂瑰紡
|
|
|
NULL,
|
|
|
- OPEN_EXISTING, //打开而不是创建
|
|
|
- 0, //同步方式
|
|
|
+ OPEN_EXISTING, //打开而不是创建
|
|
|
+ 0, //鍚屾�鏂瑰紡
|
|
|
NULL
|
|
|
);
|
|
|
|
|
|
@@ -59,15 +59,17 @@ bool CSerialPort::openComm()
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- SetupComm(m_hComm, MAX_BUFFER_SIZE, MAX_BUFFER_SIZE); // 设置读写缓冲区大小
|
|
|
+ SetupComm(m_hComm, MAX_BUFFER_SIZE, MAX_BUFFER_SIZE); // 设置读写缓冲区大小
|
|
|
|
|
|
- COMMTIMEOUTS TimeOuts; //设定读超时
|
|
|
- TimeOuts.ReadIntervalTimeout = MAXDWORD;
|
|
|
+ COMMTIMEOUTS TimeOuts;
|
|
|
+ //设定读超时
|
|
|
+ TimeOuts.ReadIntervalTimeout = 0;
|
|
|
TimeOuts.ReadTotalTimeoutMultiplier = 0;
|
|
|
- TimeOuts.ReadTotalTimeoutConstant = 0; //设定写超时
|
|
|
+ TimeOuts.ReadTotalTimeoutConstant = 200;
|
|
|
+ //设定写超时
|
|
|
TimeOuts.WriteTotalTimeoutMultiplier = 500;
|
|
|
TimeOuts.WriteTotalTimeoutConstant = 2000;
|
|
|
- SetCommTimeouts(m_hComm, &TimeOuts); //设置超时
|
|
|
+ SetCommTimeouts(m_hComm, &TimeOuts); //璁剧疆瓒呮椂
|
|
|
|
|
|
DCB dcb;
|
|
|
GetCommState(m_hComm, &dcb);
|
|
|
@@ -79,19 +81,19 @@ bool CSerialPort::openComm()
|
|
|
if(!SetCommState(m_hComm, &dcb))
|
|
|
{
|
|
|
TCHAR szBuf[1024] = { 0 };
|
|
|
- wsprintf(szBuf, L"串口设置失败,错误代码: %d", GetLastError());
|
|
|
+ wsprintf(szBuf, L"涓插彛璁剧疆澶辫触,閿欒�浠g爜: %d", GetLastError());
|
|
|
//MessageBox(NULL, szBuf, TEXT("ERROR"), MB_OK);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
- //在读写串口前,用 PurgeComm 函数清空缓冲区
|
|
|
+ //在读写串口前,用 PurgeComm 函数清空缓冲区
|
|
|
BOOL ret = PurgeComm(m_hComm, PURGE_RXCLEAR | PURGE_TXCLEAR | PURGE_TXABORT | PURGE_TXABORT);
|
|
|
if (!ret)
|
|
|
{
|
|
|
TCHAR szBuf[1024] = { 0 };
|
|
|
- wsprintf(szBuf, _T("清空缓冲区失败,错误代码: %d"), GetLastError());
|
|
|
+ wsprintf(szBuf, _T("清空缓冲区失败,错误代码: %d"), GetLastError());
|
|
|
//MessageBox(NULL, szBuf, L"ERROR", MB_OK);
|
|
|
}
|
|
|
|
|
|
@@ -101,7 +103,7 @@ bool CSerialPort::openComm()
|
|
|
|
|
|
}
|
|
|
|
|
|
-// 关闭串口
|
|
|
+// 鍏抽棴涓插彛
|
|
|
void CSerialPort::closeComm()
|
|
|
{
|
|
|
if (!m_bOpen)
|
|
|
@@ -113,7 +115,7 @@ void CSerialPort::closeComm()
|
|
|
}
|
|
|
|
|
|
|
|
|
-// 向串口发送数据
|
|
|
+// 向串口发送数据
|
|
|
bool CSerialPort::writeToComm(BYTE data[], DWORD dwLength)
|
|
|
{
|
|
|
#ifdef _DEBUG
|
|
|
@@ -134,7 +136,7 @@ bool CSerialPort::writeToComm(BYTE data[], DWORD dwLength)
|
|
|
if(ret == FALSE)
|
|
|
{
|
|
|
TCHAR szBuf[1024] = { 0 };
|
|
|
- wsprintf(szBuf, _T("读取数据失败,错误代码: %d"), GetLastError());
|
|
|
+ wsprintf(szBuf, _T("璇诲彇鏁版嵁澶辫触,閿欒�浠g爜: %d"), GetLastError());
|
|
|
//MessageBox(NULL, szBuf, L"ERROR", MB_OK);
|
|
|
|
|
|
return false;
|
|
|
@@ -145,7 +147,7 @@ bool CSerialPort::writeToComm(BYTE data[], DWORD dwLength)
|
|
|
|
|
|
}
|
|
|
|
|
|
-// 从串口中读取数据
|
|
|
+// 浠庝覆鍙d腑璇诲彇鏁版嵁
|
|
|
bool CSerialPort::readFromComm(char buffer[], DWORD dwLength, DWORD* nReaded)
|
|
|
{
|
|
|
#ifdef _DEBUG
|
|
|
@@ -161,9 +163,9 @@ bool CSerialPort::readFromComm(char buffer[], DWORD dwLength, DWORD* nReaded)
|
|
|
PurgeComm(m_hComm, PURGE_RXABORT | PURGE_RXCLEAR);
|
|
|
}
|
|
|
|
|
|
- DWORD dwRx = 0; // 读入的字节数
|
|
|
+ DWORD dwRx = 0; // 璇诲叆鐨勫瓧鑺傛暟
|
|
|
BOOL ret = FALSE;
|
|
|
- ret = ReadFile(m_hComm, buffer, dwLength, &dwRx, NULL); // 读入数据
|
|
|
+ ret = ReadFile(m_hComm, buffer, dwLength, &dwRx, NULL); // 璇诲叆鏁版嵁
|
|
|
|
|
|
if(ret == TRUE)
|
|
|
{
|
|
|
@@ -174,7 +176,7 @@ bool CSerialPort::readFromComm(char buffer[], DWORD dwLength, DWORD* nReaded)
|
|
|
else
|
|
|
{
|
|
|
TCHAR szBuf[1024] = { 0 };
|
|
|
- wsprintf(szBuf, _T("读取数据失败,错误代码: %d"), GetLastError());
|
|
|
+ wsprintf(szBuf, _T("璇诲彇鏁版嵁澶辫触,閿欒�浠g爜: %d"), GetLastError());
|
|
|
//MessageBox(NULL, szBuf, L"ERROR", MB_OK);
|
|
|
|
|
|
return false;
|