It is a TCP port. I had the noProcessEos flag at 1. Setting it to 0 results in me getting a full count of the pixel data.
From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: Tuesday, March 30, 2021 2:23 PM
To: Iain Marcuson <iain.marcuson at sydortechnologies.com>
Cc: EPICS Tech-Talk <tech-talk at aps.anl.gov>
Subject: RE: Asyn Stopping Transfer Short
Hi Iain,
Is this a TCP port or a UDP port?
What arguments did you pass to drvAsynIPPortConfigure? Did you leave the noProcessEos flag at the default of 0, or did you set it to 1? You should leave it at 0. This
may seem counterintuitive, since you are presumably not setting an input EOS string for the binary payload data. However, the asynInterposeEos does not just do EOS processing, it also does the buffering required to read a specific number of input bytes when
that data might span multiple network packets.
Mark
I am running an AreaDetector program based off of Mythen. The protocol is for the IOC to listen to a socket, first reading two headers, then the payload. The headers appear to be read correctly, as the reported image size and byte count
are correct. However, the IOC usually doesn’t read the requested number of bytes; the number seems random, and on one occasion a full frame was read. However, the return value and EOM value from asynOctetSyncIO are zero for the first payload transaction.
Future reads return a timeout, as corrupted headers result in large reads that are not met by the data source. Is there a buffer option or similar I am missing?
Iain Marcuson
Software Engineer, Sydor Technologies
585.278.1168 |
www.SydorTechnologies.com
Skype:
iain.marcuson at sydorinstruments.com
This message has been scanned for malware by Forcepoint.
www.forcepoint.com
Click
here to report this email as spam.