Hi Katie,
OK, that is useful. This is the interesting part:
2020/02/21 21:28:36.198 asynPortDriver:readFloat64: function=57, name=POOL_USED_MEMORY, value=0.000000
2020/02/21 21:28:36.198 ARV1 addr -1 queueRequest priority 0 not lockHolder
2020/02/21 21:28:36.198 asynManager::portThread port=ARV1 callback
2020/02/21 21:28:36.198 asynPortDriver:readInt32: function=54, name=POOL_ALLOC_BUFFERS, value=0
2020/02/21 21:28:36.198 ARV1 addr -1 queueRequest priority 0 not lockHolder
2020/02/21 21:28:36.198 asynManager::portThread port=ARV1 callback
2020/02/21 21:28:36.198 asynPortDriver:readInt32: function=55, name=POOL_FREE_BUFFERS, value=0
2020/02/21 21:28:36.294 ARV1 addr -1 queueRequest priority 0 not lockHolder
2020/02/21 21:28:36.294 asynManager::portThread port=ARV1 callback
2020/02/21 21:28:36.294 asynNDArrayDriver:writeInt32: function=8, paramName=ACQUIRE, value=1
2020/02/21 21:28:36.294 ADDriver:writeInt32: function=8, paramName=ACQUIRE, value=1
2020/02/21 21:28:36.297 ARV1 addr -1 queueRequest priority 0 not lockHolder
2020/02/21 21:28:36.343 ADGenICam::writeInt32 function=8, value=1, status=0
2020/02/21 21:28:36.343 ADAravis:writeInt32: function=8 ACQUIRE, value=1
2020/02/21 21:28:36.343 asynManager::portThread port=ARV1 callback
2020/02/21 21:28:36.343 asynPortDriver:readFloat64: function=57, name=POOL_USED_MEMORY, value=114.257812
2020/02/21 21:28:36.343 ARV1 addr -1 queueRequest priority 0 not lockHolder
2020/02/21 21:28:36.343 asynManager::portThread port=ARV1 callback
2020/02/21 21:28:36.343 asynPortDriver:readInt32: function=54, name=POOL_ALLOC_BUFFERS, value=20
2020/02/21 21:28:36.343 ARV1 addr -1 queueRequest priority 0 not lockHolder
2020/02/21 21:28:36.343 asynManager::portThread port=ARV1 callback
2020/02/21 21:28:36.343 asynPortDriver:readInt32: function=55, name=POOL_FREE_BUFFERS, value=0
2020/02/21 21:28:36.397 ARV1 addr -1 queueRequest priority 0 not lockHolder
So up until 36.198 no memory buffers had been allocated. At 36.294 the ACQUIRE=1 command was received, and the camera was told to start. At 36.343 20 buffers using 114.3 MB had been allocated.
Unfortunately there is not enough debugging printout in the driver to see why 20 buffers were allocated (rather than only 1) and why it did not correctly increment the number of received images and do the callbacks to plugins.
I have created a new branch of ADAravis on Github called Teledyn_debug. At the top level of your local ADAravis do
git pull
git checkout Teledyn_debug
make clean
make
Do the same thing you did for the last output and send it to me. You can turn down the scan rate of Buffer and memory polling” from 0.1 second to 1 second to reduce the amount of output.
Mark
From: Katie Matusik <kmatusik at sigray.com>
Sent: Friday, February 21, 2020 3:35 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: tech-talk <tech-talk at aps.anl.gov>
Subject: Re: Buffer full issue with ADAravis
Hi Mark,
Please find the output attached.
Hi Katie,
That output does not show what I want.
Please do the following:
-
Comment out the asynSetTraceMask line in the startup script again
-
Boot the IOC
-
Once it is done booting type that asynSetTraceMask command interactively on the command line
-
Press the Acquire button
-
Let it run for a few seconds and then type exit.
Send me the output.
Thanks,
Mark
From: Katie Matusik <kmatusik at sigray.com>
Sent: Friday, February 21, 2020 1:19 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: tech-talk <tech-talk at aps.anl.gov>
Subject: Re: Buffer full issue with ADAravis
Hi Mark,
When I press "acquire", I don't get any output in the iocsh console. I'm attaching a text file of the console output when asyntrace is enabled; I truncated at some point and am
hopefully providing you with the relevant info. For wc, I get 2161 3959 58969 Teledyne_ShadoBox.template; when I use the original script version (i.e. remove "IntReg"), then I recover your exact output: 2119 3881 57783 GenICamApp/Db/Teledyne_ShadoBox.template.
Hi Katie,
Ø
I should mention that I made two changes to makeDb.py in order for it to generate the database file: line 26 was changed to specify the encoding type, "genicam_lines = open(args[0], encoding="utf-8").readlines()" otherwise it threw an error (I'm using
python v3.6.9),
I am using Python 3.7.3 and I did not get that error on the xml you attached to your previous message. This is what I see when I run addCamera, which runs makeDb.py and makeAdl.py.
corvette:~/devel/areaDetector/ADGenICam>./addCamera.sh Teledyne_ShadoBox
Don't know what to do with IntReg
Don't know what to do with IntReg
Don't know what to do with IntReg
Don't know what to do with IntReg
Don't know what to do with IntReg
More than 16 enum entries for GevSupportedOptionSelector mbbi record, discarding additional options.
If needed, edit the Enumeration tag for GevSupportedOptionSelector to select the 16 you want.
Don't know what to do with Register
Don't know what to do with IntReg
Don't know what to do with Register
Don't know what to do with Register
Don't know what to do with Register
Ø
and I added "IntReg" to the list of data types in line 145, "if node.nodeName in ["Integer", "IntConverter", "IntSwissKnife", "IntReg"]:".
I do see messages that say “Don't know what to do with IntReg”, but I think they are harmless, just as the ones that say “Don't know what to do with Register”. This is what I get
running “wc” on the resulting .template file.
corvette:~/devel/areaDetector/ADGenICam>wc GenICamApp/Db/Teledyne_ShadoBox.template
2119 3881 57783 GenICamApp/Db/Teledyne_ShadoBox.template
What do you get?
Mark
Hi Katie,
Ø
When I press acquire, the buffer again immediately fills up and neither the values in the "Status" box nor in the stats plugin change.
The buffer is not actually “filling up”. It does indicate that 20 NDArrays have been allocated, totaling 114.3 MB. Your arrays are 2304x1300 pixels, presumably 2-bytes per pixel,
which is 5.71 MB per array. 20 arrays would be 114.3 MB, which is excactly what it says it allocated.
When you press Acquire are there any messages on the iocsh console?
It looks like the ADAravis driver is allocating NDArrays, but it is never doing callbacks, and never realizing that acquisition is complete.
We are going to need to enable some debugging to figure out why.
The first thing to do is to enable all asynTrace information from the driver. In your startup script uncomment this line after aravisConfig():
asynSetTraceMask($(PORT), 0, TRACE_ERROR|TRACEIO_DRIVER|TRACE_FLOW)
If that does not provide enough information you will need to add some more asynPrint statements in the driver to track down what is going wrong.
Mark
From: Katie Matusik <kmatusik at sigray.com>
Sent: Friday, February 21, 2020 10:54 AM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: tech-talk <tech-talk at aps.anl.gov>
Subject: Re: Buffer full issue with ADAravis
Hi Mark,
Please see attached for the plugins/all and statistics screens, as well as the xml file. The pixel format options are mono14 and mono12packed. I changed the status rate to 1 second
and enabled the statistics plugin. When I press acquire, the buffer again immediately fills up and neither the values in the "Status" box nor in the stats plugin change. I should mention that I made two changes to makeDb.py in order for it to generate the
database file: line 26 was changed to specify the encoding type, "genicam_lines = open(args[0], encoding="utf-8").readlines()" otherwise it threw an error (I'm using python v3.6.9), and I added "IntReg" to the list of data types in line 145, "if node.nodeName
in ["Integer", "IntConverter", "IntSwissKnife", "IntReg"]:".
This email and any files transmitted with it are confidential and intended solely for the use of the
individual or entity to whom they are addressed. If you have received this email in error, please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee, you
should not disseminate, distribute or copy this email. Please notify the sender immediately by email if you have received this email by mistake and delete this email from your system. If you are not the intended recipient, you are notified that disclosing,
copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited
--
Katie Matusik
5750 Imhoff Drive, Suite I
Office: 1 (925) 326 - 7926
This email and any files transmitted with it are confidential and intended solely for the use of the
individual or entity to whom they are addressed. If you have received this email in error, please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee, you
should not disseminate, distribute or copy this email. Please notify the sender immediately by email if you have received this email by mistake and delete this email from your system. If you are not the intended recipient, you are notified that disclosing,
copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited
--
Katie Matusik
5750 Imhoff Drive, Suite I
Office: 1 (925) 326 - 7926
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have
received this email in error, please notify the system manager. This message contains confidential information and is intended only for the individual named. If you are not the named addressee, you should not disseminate, distribute or copy this email. Please
notify the sender immediately by email if you have received this email by mistake and delete this email from your system. If you are not the intended recipient, you are notified that disclosing, copying, distributing or taking any action in reliance on the
contents of this information is strictly prohibited