用unique_ptr 替代new
This commit is contained in:
parent
1417770918
commit
478421ee07
@ -91,7 +91,8 @@ class Serial {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <SupportString T>
|
template <SupportString T>
|
||||||
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::string reallyPortName;
|
||||||
std::format_to(std::back_inserter(reallyPortName), "\\\\.\\{}",
|
std::format_to(std::back_inserter(reallyPortName), "\\\\.\\{}",
|
||||||
portName);
|
portName);
|
||||||
@ -144,20 +145,18 @@ class Serial {
|
|||||||
Log("Send: " + reallyCommand);
|
Log("Send: " + reallyCommand);
|
||||||
std::this_thread::sleep_for(10ms);
|
std::this_thread::sleep_for(10ms);
|
||||||
auto availableSize = ser.available();
|
auto availableSize = ser.available();
|
||||||
char *buffer = new char[availableSize + 1];
|
auto buffer = std::make_unique<char[]>(availableSize + 1);
|
||||||
std::memset(buffer, 0, availableSize);
|
std::memset(buffer.get(), 0, availableSize);
|
||||||
auto size = ser.readBytes(buffer, availableSize, timeout);
|
auto size = ser.readBytes(buffer.get(), availableSize, timeout);
|
||||||
|
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
buffer[size] = '\0';
|
buffer[size] = '\0';
|
||||||
std::string response = std::string(buffer);
|
std::string response = std::string(buffer);
|
||||||
Log("Receive: " + response);
|
Log("Receive: " + response);
|
||||||
delete[] buffer;
|
|
||||||
if (removeEcho)
|
if (removeEcho)
|
||||||
response.replace(0, reallyCommand.length(), "");
|
response.replace(0, reallyCommand.length(), "");
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
delete[] buffer;
|
|
||||||
return std::unexpected(SerialErrorCode::TIMEOUT);
|
return std::unexpected(SerialErrorCode::TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,11 +184,10 @@ class Serial {
|
|||||||
while (std::chrono::system_clock::now() < endTime) {
|
while (std::chrono::system_clock::now() < endTime) {
|
||||||
std::this_thread::sleep_for(10ms);
|
std::this_thread::sleep_for(10ms);
|
||||||
auto availableSize = ser.available();
|
auto availableSize = ser.available();
|
||||||
auto buffer = new char[availableSize + 1];
|
auto buffer = std::make_unique<char[]>(availableSize + 1);
|
||||||
auto size = ser.readBytes(buffer, availableSize, timeout);
|
auto size = ser.readBytes(buffer.get(), availableSize, timeout);
|
||||||
buffer[size] = '\0';
|
buffer[size] = '\0';
|
||||||
auto str = std::string(buffer);
|
auto str = std::string(buffer.get());
|
||||||
delete[] buffer;
|
|
||||||
if (size > 0)
|
if (size > 0)
|
||||||
Log("Receive: " + str);
|
Log("Receive: " + str);
|
||||||
if (((str.find(expect) != std::string::npos) && ...)) {
|
if (((str.find(expect) != std::string::npos) && ...)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user