Reading reply from serial port returns empty when read/write commands run separately

6 views (last 30 days)
I have a serial port that is configured as such: Serial Port Object : Serial-COM3
Communication Settings
Port: COM3
BaudRate: 9600
Terminator: 'CR'
Communication State
Status: open
RecordStatus: off
Read/Write State
TransferStatus: idle
BytesAvailable: 4
ValuesReceived: 306
ValuesSent: 200
(BytesAvailable shows 4 because the snapshot is right after I had written to the port).
If I run the following commands in a function without entering debugger or if I simply enter them simultaneously in the matlab console, the read function returns an expected result, almost instantly
fprintf(this.serial_, '%s', command); fread(this.serial_, nBytes);
IF, however, I print the command, and then afterwards try to read it, the read results in the following:
Warning: Unsuccessful read: The specified amount of data was not returned within the Timeout period.
ans =
Empty string: 0-by-1
Any thoughts on why the serial reply is different?
Thanks!
  2 Comments
Austin Adam
Austin Adam on 13 Jan 2020
Hey did you ever figure this out? I'm having the same issue where I send a command just as you did, and upon reading the response, I get an emtpy 0x1 matrix.
I have used this exact method before to communicate and it worked every time, but now for some reason I am having issues... is there something you did that made it start working again?

Sign in to comment.

Answers (1)

riverCN
riverCN on 9 Oct 2020
Edited: riverCN on 9 Oct 2020
I got the same problem. Just add a pause between writing and reading. This is called the port latency. A pause(0.05) should do the trick.

Products


Release

R2014a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!