Unsolved How to send data in QserialPort thread
-
Then move the complete serial port handling to that thread and communicate information back to the main thread when appropriate but there shouldn't be any need to sleeping or blocking.
-
@SGaist Well, how should I communicate with the serial port thread? Signals/Slots or Concurrency? Which better? You say to shouldn't block, but while writing the send buffer, have to wait in order to be writtenBytes. Then how can I check whether it was written a byte?
-
This post is deleted! -
Please be a bit more patient before bumping your own thread. This is a community forum and people answering here may not live in the same timezone as you.
Signals/Slots, concurrency has nothing to do with inter thread communication.
Why do you have to wait when writing to your serial port ?
-
@SGaist Sorry for impatient, I am struggling with this problem for a week.
To make sure whether really it's written because the receiver has limited receive buffer, also these data will be parsed after that it will send through can bus. -
Are you mixing RS232 and CAN ?
-
@SGaist It's USB-CAN module, so it converts the received data from USB to send can bus. At the same time, it might be data in can bus line and it has to read. It should never miss data even if the line is full(%100) while reading/writing.
-
These are two different buffers so you should get data even if you are writing something to it.
-
However, while it's writing, should read the buffer otherwise the line will be bus off and get an error. Unfortunately, because both are in the same thread and shouldn't wait to transfer the data.
-
Well, how can I write data to the serial port when it's in another thread. Is it right method to access directly the writing register? Or Should I use signals/slots?
serilPort *serial= new serialPort(); serial->write(//data); it's right?
-
You can send that using signals and slots or QMetaObject::invokeMethod.