From 478421ee0750d0a74d33f0c6ec9c99a2d30bfc99 Mon Sep 17 00:00:00 2001 From: JIe Date: Wed, 9 Oct 2024 17:11:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8unique=5Fptr=20=E6=9B=BF=E4=BB=A3new?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/serial.h | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/include/serial.h b/include/serial.h index bed5fd0..b4e2abe 100644 --- a/include/serial.h +++ b/include/serial.h @@ -91,7 +91,8 @@ class Serial { } template - bool OpenDevice(T portName, unsigned int bauds = 115200, int delayTime = 0) { + bool OpenDevice(T portName, unsigned int bauds = 115200, + int delayTime = 0) { std::string reallyPortName; std::format_to(std::back_inserter(reallyPortName), "\\\\.\\{}", portName); @@ -144,20 +145,18 @@ class Serial { Log("Send: " + reallyCommand); std::this_thread::sleep_for(10ms); auto availableSize = ser.available(); - char *buffer = new char[availableSize + 1]; - std::memset(buffer, 0, availableSize); - auto size = ser.readBytes(buffer, availableSize, timeout); + auto buffer = std::make_unique(availableSize + 1); + std::memset(buffer.get(), 0, availableSize); + auto size = ser.readBytes(buffer.get(), availableSize, timeout); if (size > 0) { buffer[size] = '\0'; std::string response = std::string(buffer); Log("Receive: " + response); - delete[] buffer; if (removeEcho) response.replace(0, reallyCommand.length(), ""); return response; } - delete[] buffer; return std::unexpected(SerialErrorCode::TIMEOUT); } @@ -185,11 +184,10 @@ class Serial { while (std::chrono::system_clock::now() < endTime) { std::this_thread::sleep_for(10ms); auto availableSize = ser.available(); - auto buffer = new char[availableSize + 1]; - auto size = ser.readBytes(buffer, availableSize, timeout); + auto buffer = std::make_unique(availableSize + 1); + auto size = ser.readBytes(buffer.get(), availableSize, timeout); buffer[size] = '\0'; - auto str = std::string(buffer); - delete[] buffer; + auto str = std::string(buffer.get()); if (size > 0) Log("Receive: " + str); if (((str.find(expect) != std::string::npos) && ...)) {