I’m having an intermittent “no-match” problem with a Horizon lab interface that has been live for a couple of years. When the error occurs, the interface hangs in the lab system and has to be reset manually. I set up an EO alias to enable all output for the pdl and applied it to the thread.
I’m a little puzzled by the pdl output. In some cases the inbound message doesn’t arrive all at once. It looks as if the pdl waits 15 seconds for the rest of the message to appear:
[pdl :read:DBUG/2: pwlab_in] Events: E 0, R 8, W 0
[pdl :PDL :DBUG/0: pwlab_in] read 512 bytes
[pdl :PDL :DBUG/0: pwlab_in] input buffer accepted 512 bytes, now 512
[pdl :PDL :DBUG/0: pwlab_in] 0b 4d 53 48 7c 5e 7e 5c |.MSH|^~|
[pdl :PDL :DBUG/0: pwlab_in] 26 7c 4c 41 30 31 7c 4c |&|LA01|L|
— snip —
[pdl :PDL :DBUG/0: pwlab_in] 20 54 4f 50 20 35 20 4d | TOP 5 M|
[pdl :PDL :DBUG/0: pwlab_in] 4c 7c 30 30 30 36 34 37 |L|000647|
[pdl :PDL :DBUG/0: pwlab_in] IDLE and 512 bytes but no error: starting READ
[pdl :PDL :DBUG/2: pwlab_in] PDL changed states: old 0, new 1
[pdl :PDL :DBUG/0: pwlab_in] Calling Tcl procedure: hci_pd.read
[pdl :PDL :DBUG/0: pwlab_in] with args: {}
[pdl :PDL :DBUG/0: pwlab_in] Tcl procedure hci_pd.read returns ‘RECEIVE’
[pdl :PDL :DBUG/0: pwlab_in] trying to match phrase: basic-msg
[pdl :PDL :DBUG/1: pwlab_in] PDL setting timeout in 15.00 seconds
[pdl :PDL :DBUG/0: pwlab_in] READ operation in progress (512 bytes buffered still, 512 before)
[pdl :read:DBUG/2: pwlab_in] Events: E 0, R 8, W 0
[pdl :PDL :DBUG/0: pwlab_in] read 455 bytes
[pdl :PDL :DBUG/0: pwlab_in] input buffer accepted 455 bytes, now 967
[pdl :PDL :DBUG/0: pwlab_in] 5e 44 45 41 52 42 4f 52 |^DEARBOR|
[pdl :PDL :DBUG/0: pwlab_in] 4e 5e 4a 54 7c 7c 7c 7c |N^JT|||||
— snip —
[pdl :PDL :DBUG/0: pwlab_in] 20 35 3a 34 36 3a 31 34 | 5:46:14|
[pdl :PDL :DBUG/0: pwlab_in] 20 50 4d 24 0d 1c 0d | PM$…|
[pdl :PDL :DBUG/0: pwlab_in] multi_phrase_2: status = ok
[pdl :PDL :DBUG/0: pwlab_in] Calling Tcl procedure: read.done
[pdl :PDL :DBUG/0: pwlab_in] with args: {{status ok} {end {967 0}} {data {1 964}}}
[pdl :PDL :DBUG/0: pwlab_in] Tcl procedure read.done returns ”
[pdl :PDL :DBUG/2: pwlab_in] PDL changed states: old 1, new 0
[pdl :read:DBUG/1: pwlab_in] PDL did read msg: code = 0
[pdl :PDL :DBUG/0: pwlab_in] READ operation completed (0 bytes buffered still, 967 before)
What happens if the second half of the message arrives late? Does the pdl driver throw the “no-match” error? Our network can get extremely congested and 15 seconds might not be long enough.
Also, a while back someone posted a replacement for mlp_tcp.pdl that dumps the buffer if a “no-match” error occurs. Anyone willing to share that code?
Cloverleaf 5.3 Rev2 on Windows 2000
Thanks,
David