Clear Filters
Clear Filters

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

5 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.

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Products


Release

R2014a

Community Treasure Hunt

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

Start Hunting!