These serial ports are definitely alternating their read cycles.
The log of stdio is below for the updated acode. It�s pretty much the same code as the one you got earlier, only both listener_E and listener_F are both active, and I put printf statements around both WFD(ser_Xread … ) statements.
You can see the program starts off fine with the “top of” print statements appearing, but you notice that despite an active GPS data stream coming in on port F, the speedchecker is reporting a timeout and the listener_F never gets past the ser_Fread statement. That is UNTIL I type on the dumb terminal set to talk to port E.
I typed “test” on the dumb terminal port, and low and behold, listener_E is Satisfied, AND THEN LISTENER_F gets satisfies for ONE AND ONLY ONE burst of data.
Here’s the stdio log from the run of the code that I attached:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Hello: bl4s200 - gps,matrix_orbital 091104_01
top of listener_E
top of listener_F
speed_checker:128: current speed: >-6<
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
talker_E:00001: no response.
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
after wfd of listener_E
listener_C:got 4 chars: >test<
top of listener_E
after wfd of listener_F
top of listener_F
speed_checker:15: current speed: >-14<
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
after wfd of listener_E
listener_C:got 5 chars: >2test<
top of listener_E
after wfd of listener_F
top of listener_F
speed_checker:15: current speed: >-14<
talker_E:00002: received answer >2test<
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
speedchecker: no response, abort
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++