From a36ce565e3ee7da702d1cf76caa2ce2d12185daa Mon Sep 17 00:00:00 2001 From: ruanshudong Date: Fri, 6 Dec 2024 09:18:32 +0800 Subject: [PATCH] fix tc_serialport interface, use const *, size_t --- util/include/util/tc_serialport.h | 12 +++++++----- util/src/tc_serialport.cpp | 10 +++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/util/include/util/tc_serialport.h b/util/include/util/tc_serialport.h index 9ccc2958..7354c7c3 100644 --- a/util/include/util/tc_serialport.h +++ b/util/include/util/tc_serialport.h @@ -181,27 +181,29 @@ class UTIL_DLL_API TC_SerialPort /** * @brief 异步发送buffer, 如果无法打开串口, 则抛出异常TC_SerialPortException - * @param string & sBuffer + * @param char* sBuffer + * @param size_t length * @param bool header, 是否把数据插入到队列头部, 默认数据都在尾部的! */ - void sendRequest(const std::string & sBuffer, bool header = false); + void sendRequest(const char* sBuffer, size_t length, bool header = false); /** * @brief 异步发送buffer(尽量使用这个函数, 减少一次内存copy), 如果无法打开串口, 则抛出异常TC_SerialPortException * @sendRequest - * @param string & sBuffer + * @param char* sBuffer * @param bool header, 是否把数据插入到队列头部, 默认数据都在尾部的! */ void sendRequest(const std::shared_ptr & buff, bool header = false); /** * @brief 发送buffer, 并等待响应, 如果无法打开串口, 则抛出异常TC_SerialPortException, 需要在RequestCallback::onSucc中, 调用notify来唤醒 - * @param string & sBuffer + * @param char* sBuffer + * @param size_t length * @param vector & response, 响应数据 * @param bool header, 是否把数据插入到队列头部, 默认数据都在尾部的! * @return 返回cv_status, 如果超时返回cv_status::timeout, 否则返回cv_status::no_timeout */ - std::cv_status sendRequestAndResponse(const std::string & sBuffer, vector & response, bool header = false, uint32_t timeout = 3000); + std::cv_status sendRequestAndResponse(const char* sBuffer, size_t length, vector & response, bool header = false, uint32_t timeout = 3000); /** * @brief 发送buffer(尽量使用这个函数, 减少一次内存copy), 并等待响应, 如果无法打开串口, 则抛出异常TC_SerialPortException, diff --git a/util/src/tc_serialport.cpp b/util/src/tc_serialport.cpp index 0b79f481..e6df88f8 100644 --- a/util/src/tc_serialport.cpp +++ b/util/src/tc_serialport.cpp @@ -474,14 +474,14 @@ TC_SerialPort::RequestCallbackPtr TC_SerialPort::getRequestCallbackPtr() return _callbackPtr; } -void TC_SerialPort::sendRequest(const string & sBuffer, bool header) +void TC_SerialPort::sendRequest(const char* sBuffer, size_t length, bool header) { - if (sBuffer.empty()) + if (sBuffer == nullptr || length == 0) return; shared_ptr buff = std::make_shared(); - buff->addBuffer(sBuffer); + buff->addBuffer(sBuffer, length); if(!isValid()) { @@ -502,11 +502,11 @@ void TC_SerialPort::sendRequest(const shared_ptr & buf addSendReqBuffer(buff, header); } -std::cv_status TC_SerialPort::sendRequestAndResponse(const std::string & buff, vector & response, bool header, uint32_t timeout) +std::cv_status TC_SerialPort::sendRequestAndResponse(const char* sBuffer, size_t length, vector & response, bool header, uint32_t timeout) { std::unique_lock lock(_waitMutex); _response.clear(); - sendRequest(buff, header); + sendRequest(sBuffer, length, header); auto status = _waitCond.wait_for(lock, std::chrono::milliseconds(timeout)); if(status == std::cv_status::no_timeout) {