I believe the problem is that the camera is defaulting to jumbo packets when it is power cycled. It works after you run their viewer because that changes the packet size.
For now you can fix this by opening the Features-1 screen which should look like this:
Change the GC_GeVSCPSPacketSize PV to 1500.
You can add the following at the end of your st.cmd so it will be set each time you start:
I will fix the driver so that it auto-negotiates the packet size.
I've been strugling with ADVimba module from areaDetector.
After connecting and launching ioc with ADVimba driver I receive this error message:
02-05-2020 16:50:47.168 [T] Line 976 : resend returned error
2020/02/05 16:50:47.168 ADVimba::processFrame error GetReceiveStatus returned 0 frameStatus=-1
I checked with VimbaViewer tool that camera works properly and I am able to see any images. I have tried also pymba and I can catch frames as well.
I noticed that when I launch VimbaViewer and I close program, then, IOC based on ADVimba driver works fine.
I observed the same behaviour when I run and close another IOC with Prosilica driver.
Problem appears only when I disconnect camera from the power supply.
I have checked two camera models:
MANTA G125B, MAKO B234B
Version of modules I use:
EPICS ver 3.15.7
areaDetector ver 3-8
ADVimba ver 1-1
ADGenICam ver 1-2
My st.cmd:
#!../../bin/linux-x86_64/Camera
< envPaths
errlogInit(20000)
cd "${TOP}"
## Register all support components
dbLoadDatabase "dbd/Camera.dbd"
Camera_registerRecordDeviceDriver pdbbase
# Location of transport layer definition files
epicsEnvSet("GENICAM_GENTL64_PATH", "$(ADVIMBA)/bin/$(ARCH)")
# Prefix for all records
epicsEnvSet("PREFIX", "MANTA:")
epicsEnvSet("MODULE", "ADVimba:")
# IP address
epicsEnvSet("CAMERA_ID", "169.254.97.150")
# The port name for the detector
epicsEnvSet("PORT", "VMB1")
# Really large queue so we can stream to disk at full camera speed
epicsEnvSet("QSIZE", "2000")
# The maximim image width; used for row profiles in the NDPluginStats plugin
epicsEnvSet("XSIZE", "1216")
# The maximim image height; used for column profiles in the NDPluginStats plugin
epicsEnvSet("YSIZE", "1936")
# Define NELEMENTS to be enough for a 1936x1216x1 (color) image
epicsEnvSet("NELEMENTS", "23541760")
# NELEMENTS * 10
epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "235417600")
# Paths with db files
epicsEnvSet("EPICS_DB_INCLUDE_PATH", "$(ADCORE)/db:$(ADGENICAM)/db:$(ADVIMBA)/db:$(ADPROSILICA)/db")
# Paths to templates
#epicsEnvSet("GENICAM_DB_FILE", "$(ADGENICAM)/db/AVT_Manta_G125B.template")
epicsEnvSet("GENICAM_DB_FILE", "$(ADGENICAM)/db/AVT_MAKO_G_234B.template")
epicsEnvSet("ADVIMBA_DB_FILE", "$(ADVIMBA)/db/vimba.template")
# array size
epicsEnvSet("ARRAYSIZE", "90000")
# ADVimbaConfig(const char *portName, const char *cameraName, size_t maxMemory, int priority, int stackSize)
ADVimbaConfig("$(PORT)", "$(CAMERA_ID)", 0, 0, 0)
# Main database
dbLoadRecords("$(ADVIMBA_DB_FILE)", "P=$(PREFIX),R=$(MODULE),PORT=$(PORT)")
# Load the autogenerated file of GenICam features
dbLoadRecords("$(GENICAM_DB_FILE)", "P=$(PREFIX),R=GenICam:,PORT=$(PORT)")
# Create a standard arrays plugin, set it to get data from first simDetector driver.
NDStdArraysConfigure("Image1", 3, 0, "$(PORT)", 0, 0)
# This waveform only allows transporting 8-bit images
dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int8,FTVL=UCHAR,NELEMENTS=$(ARRAYSIZE)")
cd "${TOP}/iocBoot/${IOC}"
iocInit()
Any suggestions or comments would be appreciated.
Best regards,
Kacper Kłys
email:
kacper.klys at e9controls.com