diff --git a/libserial/serial.cpp b/libserial/serial.cpp index a78d161..bcfcedc 100644 --- a/libserial/serial.cpp +++ b/libserial/serial.cpp @@ -50,12 +50,19 @@ public: } } - void write(const char* data, int len) + int write(const char* data, int len) { + bytes_transferred_ = 0; + io_.reset(); + boost::system::error_code write_ec; + + std::size_t ret = boost::asio::write(*port_, boost::asio::buffer(data, len), write_ec); + int send_size = static_cast(ret); + return send_size; } - int read(char* data, int size) + int read(char* data, int size) { bytes_transferred_ = 0; io_.reset(); @@ -235,9 +242,9 @@ int CSerialOpr::read(char* data, int size) { return imp_->read(data, size); } -int CSerialOpr::write(const char* data) +int CSerialOpr::write(const char* data, int len) { - return 0; + return imp_->write(data, len); } const char* CSerialOpr::get_last_error() const { diff --git a/libserial/serial.h b/libserial/serial.h index e6fd3a6..710fd6f 100644 --- a/libserial/serial.h +++ b/libserial/serial.h @@ -55,7 +55,7 @@ public: int open(); void close(); int read(char* data, int size); - int write(const char* data); + int write(const char* data, int len); const char* get_last_error() const; private: diff --git a/main.cpp b/main.cpp index 25d64b8..f9b8d6c 100644 --- a/main.cpp +++ b/main.cpp @@ -6,6 +6,8 @@ using namespace cppbox; int main() { char buffer[512]{}; + char buffer2[512]{}; + std::snprintf(buffer2, sizeof(buffer2), "%s", "Hello/000\r\n"); CSerialOpr opr; @@ -14,7 +16,7 @@ int main() opr.set_flow_control(FlowControl::NoFlowControl); opr.set_parity(Parity::EvenParity); opr.set_port("COM2"); - opr.set_timeout(10 * 1000); + opr.set_timeout(100 * 1000); opr.set_stop_bits(StopBits::OneStop); if (opr.open() != 0) { @@ -22,7 +24,11 @@ int main() } int read_size = opr.read(buffer, sizeof(buffer)); - + if (read_size > 0) { + std::cout << "要发送的数据大小:" << strlen(buffer2) << "\n"; + int write_size = opr.write(buffer2, strlen(buffer2)); + std::cout << "实际发送的数据大小:" << write_size << "\n"; + } return 0; } \ No newline at end of file