paulscherrerinstitute / pcaspy

Portable Channel Access Server in Python
BSD 3-Clause "New" or "Revised" License
32 stars 24 forks source link

PV cannot exceed count > 1000 ? #83

Closed vstadnytskyi-FDA closed 2 years ago

vstadnytskyi-FDA commented 2 years ago

I have created a server that generated an image PV. It seems that I get into some issues with max size allowed. A PV created with PCASPY server cannot be large than 1000 (COUNT > 1000). I have looked through some of the examples and cannot find you using more than count>1000. Is there a way to get rid of this limitation?

PyEpics returns error 72 epics.ca.ChannelAccessGetFailure: Get failed; status code: 7

and caproto-caget return caproto._utils.ErrorResponseReceived: ErrorResponse(original_request=MessageHeader(command=15, payload_size=0, data_type=6, data_count=0, parameter1=1, parameter2=0), cid=0, status=CAStatusCode(name='ECA_TOLARGE', code=9, code_with_severity=72, severity=<CASeverity.WARNING: 0>, success=0, defunct=False, description='The requested data transfer is greater than available memory or EPICS_CA_MAX_ARRAY_BYTES'), error_message=bytearray(b"unable to fit read notify response into server\'s buffer\x00"))

xiaoqiangwang commented 2 years ago

Environment variable EPICS_CA_MAX_ARRAY_BYTES controls the maximum array size. Define it to the desired size before launching the server or the client, e.g. 1000 double precision float numbers requires 8000 bytes.

export EPICS_CA_MAX_ARRAY_BYTES=10000
vstadnytskyi-FDA commented 2 years ago

Environment variable EPICS_CA_MAX_ARRAY_BYTES controls the maximum array size. Define it to the desired size before launching the server or the client, e.g. 1000 double precision float numbers requires 8000 bytes.

export EPICS_CA_MAX_ARRAY_BYTES=10000

thanks. This is exactly what I needed. I keep forgetting about this environmental variable.