diff --git a/src_main/io_devices/piserial.cpp b/src_main/io_devices/piserial.cpp index cab28cec..bdf47890 100755 --- a/src_main/io_devices/piserial.cpp +++ b/src_main/io_devices/piserial.cpp @@ -496,6 +496,19 @@ PIByteArray PISerial::readData(int size, double timeout_ms) { } +bool PISerial::send(const void * data, int size) { + int ret = 0; + int wsz = 0; + do { + ret = write(&(((uchar*)data)[wsz]), size - wsz); + if (ret > 0) wsz += ret; + piCout << ret << wsz; + else return false; + } while (wsz < size); + return (wsz == size); +} + + bool PISerial::openDevice() { //piCout << "ser open" << path(); if (path().isEmpty()) return false; diff --git a/src_main/io_devices/piserial.h b/src_main/io_devices/piserial.h index cb1ad9f8..fe99c669 100755 --- a/src_main/io_devices/piserial.h +++ b/src_main/io_devices/piserial.h @@ -164,11 +164,11 @@ public: //! \brief Write to device data "data" with maximum size "size" and wait for data written if "wait" is \b true. //! \returns \b true if sended bytes count = "size" - bool send(const void * data, int size) {return (write(data, size) == size);} + bool send(const void * data, int size); //! \brief Write to device byte array "data" and wait for data written if "wait" is \b true. //! \returns \b true if sended bytes count = size of string - bool send(const PIByteArray & data) {return (write(data.data(), data.size_s()) == data.size_s());} + bool send(const PIByteArray & data) {return send(data.data(), data.size_s());} //! \brief Returns all available speeds for serial devices static PIVector availableSpeeds();